在vbscript中读取utf-8文本文件 [英] Read utf-8 text file in vbscript

查看:447
本文介绍了在vbscript中读取utf-8文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文本文件保存为UTF-8,当我尝试读取该文件,它给我奇怪的字符,而不是正确的字符(它包含中文字符)。如何让它给我正确的汉字?

 选项显式

Dim objFSO,strTextFile ,strData,strLine,arrLines,aniTextFile,aniData,aniLines,aniLine,objTextFile,fso,inputFileList,listFile,fname
Dim iim1,iret,iret2,iret3,i
Const ForReading = 1

设置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)

对于i = 0到UBound(arrLines)
strData = objFSO.OpenTextFile(arrLines(i),ForReading).ReadAll
WScript.Echo strData

设置listFile = objFSO.OpenTextFile(aniLines(i),ForReading)
Do While Not listFile.AtEndOfStream
fName = listFile.ReadLine
WScript.Echo fName
Loop
listFile.Close
Next


解决方案

从文档


FSO只能读取ASCII文本文件。您不能使用FSO读取
Unicode文件或读取二进制文件格式,如Microsoft Word或
Microsoft Excel。


因为你有奇怪的字符,我想这有点不正确,该文件被读取在一些8位的Windows代码页,因为如果它真的只能读取ASCII,你会看到? ?

windows / desktop / ms676526(v = vs.85).aspx> 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


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 

解决方案

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

这篇关于在vbscript中读取utf-8文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆