Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Read utf-8 text file in vbscript

I have a text file saved as UTF-8 and when I try to read the file it gives me weird characters and not the correct characters (it contains Chinese characters). How can I make it give me the correct Chinese characters?

Option Explicit  Dim objFSO, strTextFile, strData, strLine, arrLines, aniTextFile, aniData, aniLines, aniLine, objTextFile, fso, inputFileList, listFile, fname Dim iim1, iret, iret2, iret3, i Const ForReading   = 1  Set objFSO = CreateObject("Scripting.FileSystemObject") strTextFile = "C:\Users\admin\Desktop\ArtistCG\folder.txt" strData = objFSO.OpenTextFile(strTextFile,ForReading).ReadAll arrLines = Split(strData,vbCrLf)  aniTextFile = "C:\Users\admin\Desktop\ArtistCG\folder-list.txt" aniData = objFSO.OpenTextFile(aniTextFile,ForReading).ReadAll aniLines = Split(aniData,vbCrLf)  For i = 0 To UBound(arrLines)   strData = objFSO.OpenTextFile(arrLines(i),ForReading).ReadAll   WScript.Echo strData    Set listFile = objFSO.OpenTextFile(aniLines(i),ForReading)   Do While Not listFile.AtEndOfStream     fName = listFile.ReadLine     WScript.Echo fName   Loop   listFile.Close Next  
like image 880
Trish Pham Avatar asked Dec 13 '12 01:12

Trish Pham


1 Answers

From the documentation:

The FSO can read only ASCII text files. You cannot use the FSO to read Unicode files or to read binary file formats such as Microsoft Word or Microsoft Excel.

Since you got weird characters, I guess that's somewhat incorrect and the file was read in some 8-bit windows code page because if it really could read only ASCII, you would have seen ????

Anyway, if you can use ADO, you can do this:

Dim objStream, strData  Set objStream = CreateObject("ADODB.Stream")  objStream.CharSet = "utf-8" objStream.Open objStream.LoadFromFile("C:\Users\admin\Desktop\ArtistCG\folder.txt")  strData = objStream.ReadText()  objStream.Close Set objStream = Nothing 
like image 143
Esailija Avatar answered Oct 10 '22 01:10

Esailija