How to change Text encoding from ANSI to UTF8?
If there are multiple txt files or programatically you need to change the encoding of a file from ANSI to UTF8 or any other encoding, use the code in this page.
If it is just a one time task, use these manual steps.
- Open the txt in notepad or any text editor
- Click Menu -> File
- Choose SaveAs
- Browse path
- In dropdown near Save button, select UTF8
- Click Save
This will convert the opened file format from plain text to a unicode format.
VBA code to convert Text to UTF8 (.Txt to Unicode)
The unicode format is used in files that has non English characters in the data. To store non English or special characters in a text file, the encoding has to be changed from text to UTF.
Here is the code to change the encoding of a ANSI file.
Sub convertTxttoUTF(sInFilePath As String, sOutFilePath As String)
Dim objFS As Object
Dim iFile As Double
Dim sFileData As String
'Init
iFile = FreeFile
Open sInFilePath For Input As #iFile
sFileData = Input$(LOF(iFile), iFile)
sFileData = sFileData & vbCrLf
Close iFile
'Open & Write
Set objFS = CreateObject("ADODB.Stream")
objFS.Charset = "utf-8"
objFS.Open
objFS.WriteText sFileData
'Save & Close
objFS.SaveToFile sOutFilePath, 2 '2: Create Or Update
objFS.Close
'Completed
Application.StatusBar = "Completed"
End Sub
This enables the system to store data in enhanced unicode format to hold the extra characters.
Where this UTF8 conversion can be useful?
When you download a xml data from any server that contains unicode characters, it is possible that the data is saved in ANSI format, if it is manually saved.
When you try to load a ANSI encoded xml file with special characters into Excel, it will give error. The process will stop with message “not able to load special characters”.
In such cases, the file can be converted into proper unicode format and then loaded into Excel.
External Refernce:
- Here is another similar topic about ANSI text to Unicode conversion using VBA code.