2012-12-13 17 views
14

私は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 

答えて

33

From the documentation

FSOのみASCIIテキストファイルを読み込むことができます。 FSOを使用して ユニコードファイルを読み取ったり、Microsoft Wordや Microsoft Excelなどのバイナリファイル形式を読み取ることはできません。

あなたが変な文字を持っているので、私はそれがやや不正確だと思うし、それは本当に唯一のASCIIを読むことができれば、あなたはとにかく????

を見ているだろうので、このファイルは、いくつかの8ビットのWindowsコードページで読み取りました、あなたが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

lol FSOはUTF-8を読むことができませんが、MSDNのドキュメントでは、Unicodeとバイナリファイルについて笑ってくれます。 –

+3

'objStream.ReadText()'の後に 'objStream.Close'を忘れないでください。 – Olexa

+2

'FSO'はUTF-8を読むことができませんが、実際には' FSO'と[charの文字をループで読む]というASCII形式でファイルを開くことができます(http://stackoverflow.com/a/ 6087783/2165759)、その文字列を文字列[各文字をUTF-8エンコードファイルのバイトとして考える](https://en.wikipedia.org/wiki/UTF-8#Description)に変換します。それは単なる学問的興味です。 'ADODB.Stream'は間違いなく最も効率的です。 – omegastripes

-4

あなたは真のとき、ファイル・システム・オブジェクトと、使用してUTF-8形式のファイルを読み込むことができます。

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

-0.99 .OpenTextFile()の* tristate * fourth/formatパラメータは、システムのデフォルト(-2)、UTF-16(-1)、または 'ASCII'(0)エンコーディングを使用してテキストファイルを開くことができます。 * UTF-8。 –

関連する問題