需要在vbscript中将文本文件从UTF8转换为Unicode [英] Need to convert text files to Unicode from UTF8 in vbscript

查看:183
本文介绍了需要在vbscript中将文本文件从UTF8转换为Unicode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在文件夹中有一堆文本文件,我需要将编码更改为Unicode,而不是手动打开文件并将其保存为Unicode,我想要一个脚本来执行此操作。



这些文件目前使用的是UTF-8编码,而我极其有限的脚本编写能力无法体现出这一点。我发现下面的代码从ANSI转换为Unicode,当我使用这个代码时,它会将其转换为Unicode,但它会混淆字符,因此转换实际上不起作用。有什么想法吗?感谢提前。

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

对于oFiles中的每个文件
如果Right(file.Name,3)=txt然后
设置ANSIFile = fso.OpenTextFile(file.path,1,False,False)
ANSIContent = ANSIFile.ReadAll
设置UNICODEFile = fso.OpenTextFile(file.path,2,False,True)
UNICODEFile.Write ANSIContent
结束如果
下一个


解决方案

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

 设置流= CreateObject(ADODB.Stream)
stream.Open
流。 Type = 2'text
stream.Charset =utf-8
stream.LoadFromFileC:\input.txt
text = stream.ReadText
stream.Close

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

或者多一点精简:

 设置fso = CreateObject(Scripting.FileSystemObject)

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

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

 设置fso = CreateObject(Scripting.FileSystemObject)
设置流= CreateObject(ADODB.Stream)

对于每个f在fso.GetFolder(C:\source\folder)。文件
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)。写文本
下一个


I have a bunch of text files in a folder that I need to change the encoding on to Unicode and instead of manually opening the files and saving them as Unicode I would like to have a script to do this.

The files are currently in UTF-8 encoding and my extremely limited scripting abilities can't figure this one out. I found the code below to convert to Unicode from ANSI and when I use this code it does convert it to Unicode but it messes up the characters so the conversion doesn't actually work. Any thoughts? Thanks in advance.

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

解决方案

Unfortunately VBScript doesn't support this kind of conversion by itself. You can use an ADODB.Stream object, though:

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

Or a little more streamlined:

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

If you want to replace the existing file you'll have to use the first version and use the same file for input and output. Use a loop like this to iterate over all files in a folder:

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

这篇关于需要在vbscript中将文本文件从UTF8转换为Unicode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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