File Encoding
Yesterday (24th June 2008), one of SQAForums member had an query for changing the file format of any file from ANSI to UTF-8. Below is the link to the same query
http://www.sqaforums.com/showflat.php?Number=493915
Though i replied to the poster to do it using DotNetFactory but there was something that was still making me feel uneasy. With in few mins i knew what was making me feel uneasy, it was NOT knowing how to actually do it. That was it and i opened my Visual Studio 2005 IDE. Started exploring various things in the object browser and finally with some R&D effort came up with very simple code to write files in desired encoding.
This article will explore how to write files in various formats UTF-7, UTF-8, UTF-32, ASCII, Unicode and Big Endian Unicode. All this code would be for QTP and we would be using DotNetFactory for creating the .NET Class objects
Step 1:
First stpe is to create an object of class System.Text.Encoding to get access to various encoding formats
'Create the .NET object for getting encoding formats Set oEncoder = DotNetFactory("System.Text.Encoding") 'Get various encoding formats With oEncoder Set UTF7 = .UTF7 Set UTF8 = .UTF8 Set UTF32 = .UTF32 Set ASCII = .ASCII Set UNICODE = .UNICODE Set BigEndianUNICODE = .BigEndianUnicode End With |
Step 2:
Next is to create a file in desired format using System.IO.StreamWriter class of .NET. This can be done as illustrated in code below
'File to write to sFileName = "C:\Test.txt" 'We don't want to append if file already exists. Just overwrite existing content bAppendToExistingFile = False 'Encoding to use Set oEncodingToUse = UTF32 'Create a file stream in required encoding format Set oFile = DotNetFactory("System.IO.StreamWriter", , sFileName, bAppendToExistingFile, oEncodingToUse) 'Write something on the file oFile.Write "Tarun " oFile.WriteLine "Lalwani" 'Close the file oFile.Close 'cleanup objects oFile.dispose Set oFile = Nothing Set oEncoder = Nothing |
Files that we create using different format might look same in a notepad, but they are not actually same in the way they are stored. To observe the difference we will use the Edit command of MS-DOS.
Similarly we can also read files using System.IO.StreamReader class of .NET as shown in below code
'File to read from sFileName = "C:\Test.txt" 'Encoding to use Set oEncodingToUse = UTF32 'Create a file stream in required encoding format Set oFile = DotNetFactory("System.IO.StreamReader", , sFileName, oEncodingToUse) 'Loop until we reach end of stream While Not oFile.EndOfStream 'Read and print line by line Print oFile.ReadLine() Wend 'Close the file oFile.Close 'cleanup objects oFile.dispose Set oFile = Nothing Set oEncoder = Nothing |
Above code would produce the below output in the QTP print window
DotNetFactory adds a lot of power to QTP, but to see the real beauty you need to unleash it yourself. This article is a mere example

