Чтение текстового файла utf-8 в vbscript - программирование
Подтвердить что ты не робот

Чтение текстового файла utf-8 в vbscript

У меня есть текстовый файл, сохраненный как UTF-8, и когда я пытаюсь прочитать файл, он дает мне странные символы, а не правильные символы (он содержит китайские символы). Как я могу заставить его дать мне правильные китайские символы?

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 
4b9b3361

Ответ 1

Из документации:

FSO может читать только текстовые файлы ASCII. Вы не можете использовать FSO для чтения Unicode файлы или для чтения двоичных форматов файлов, таких как Microsoft Word или Microsoft Excel.

Поскольку у вас странные символы, я думаю, что это несколько некорректно, и файл был прочитан на 8-битной странице кода Windows, потому что, если бы он действительно мог читать только ASCII, вы бы видели ????

В любом случае, если вы можете использовать ADO, вы можете сделать это:

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

Ответ 2

Вы можете читать форматированные файлы UTF 8, используя True, когда с объектом файловой системы.

sFile = "C:\Users\admin\Desktop\ArtistCG\folder.txt"
Set FS = CreateObject("scripting.filesystemobject")
Set oReadfile = FS.OpenTextFile(sFile, 1, False, True)
TextFromFile = sReadfile.ReadAll