需要将文本文件从UTF8转换为Unicode在VBScript(Need to convert te

2019-08-21 00:05发布

我有我需要更改为Unicode编码和代替手动打开文件并将其保存为Unicode我想有一个脚本来执行此文件夹中的一堆文本文件。

该文件正在UTF-8编码和我极其有限的脚本能力想不通这一个。 我发现下面的代码从ANSI转换为Unicode,当我使用此代码确实将其转换为Unicode,但这样的转换实际上并没有解决它弄乱人物。 有什么想法吗? 提前致谢。

Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder("C:\test")
Set oFiles = oFolder.files

For each file in oFiles
If Right(file.Name, 3) = "txt" Then
Set ANSIFile = fso.OpenTextFile(file.path, 1, False, False)
ANSIContent = ANSIFile.ReadAll
Set UNICODEFile = fso.OpenTextFile(file.path, 2, False, True)
UNICODEFile.Write ANSIContent
End If
Next

Answer 1:

不幸的VBScript本身并不支持这种转换。 您可以使用ADODB.Stream对象,但:

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 2 'text
stream.Charset = "utf-8"
stream.LoadFromFile "C:\input.txt"
text = stream.ReadText
stream.Close

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\output.txt", 2, True, True)
f.Write text
f.Close

还是有点更精简:

Set fso = CreateObject("Scripting.FileSystemObject")

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 2 'text
stream.Charset = "utf-8"
stream.LoadFromFile "C:\input.txt"
fso.OpenTextFile("C:\output.txt", 2, True, True).Write stream.ReadText
stream.Close

如果要替换现有文件,你将不得不使用的第一个版本,并使用相同的文件的输入和输出。 使用这样的循环遍历文件夹中的所有文件:

Set fso = CreateObject("Scripting.FileSystemObject")
Set stream = CreateObject("ADODB.Stream")

For Each f In fso.GetFolder("C:\source\folder").Files
  stream.Open
  stream.Type = 2 'text
  stream.Charset = "utf-8"
  stream.LoadFromFile f.Path
  text = stream.ReadText
  stream.Close

  fso.OpenTextFile(f.Path, 2, True, True).Write text
Next


Answer 2:

我能为UTF-8的文件转换与此代码。 但:

1)在新生成的Unicode文件的开始,有(FF FE)。我的序列不得不删除在第一行的前两个字符再次让我的旧代码工作。

2)对于像我这样的傻瓜就没有奢侈到有代码沿“暗淡”的声明。 我总是用选项比较数据库/ Explicit选项。 如果他们错过这使我很头疼。 :-)



文章来源: Need to convert text files to Unicode from UTF8 in vbscript