web-dev-qa-db-ja.com

vbscriptでutf-8テキストファイルを読み取る

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 
19
Trish Pham

ドキュメントから

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
41
Esailija