这篇文章上次修改于 480 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
最近处理一些高品质的日语专辑时碰到了不少乱码的文件, 其实是打开方式不对. 解决乱码要么把系统和时区等切到日文 (这样中文又会乱码但对软件也有效) 要么修改文件编码.
冲浪有一会了发现还是没找到我想要的东西, 于是拿出了半年没登的账号把当初用的 VBS 脚本给下回来了. 使用方法就是把文本文件拖动到脚本上, 然后就会生成一个 文件名_uni.xxx
的没有乱码的文件.
复制以下代码为 xxx.vbs 即可, 因为这玩意不支持 UTF-8 只能显示 GBK 编码下的中文, 索性改成英文.
If WScript.Arguments.Count<1 Then
MsgBox "Please drag the text file to the script to run"
WScript.Quit
End If
'Store arguments (list of files) into class
Set Files = WScript.Arguments
Function gTs(FilePath1,FilePath2,charset1,charset2)
dim str
str = ""
Set adostream = CreateObject("ADODB.Stream")
With adostream
.Type = 2
.Open
.Charset = charset1
.Position = 0
.LoadFromFile FilePath1
str = .readtext
.close
End With
Set adostream = Nothing
Set adostream = CreateObject("ADODB.Stream")
With adostream
.Type = 2
.Open
.Charset = charset2
.Position = 0
.writetext str
.SaveToFile FilePath2, 2
.flush
.close
End With
Set adostream = Nothing
End Function
set fso=createobject("scripting.filesystemobject")
for i = 0 to Files.Count-1
set file = fso.getFile(Files(i))
'intercept file name
str = Left(Files(i),InStrRev(Files(i),".")-1)
newfname = replace(Files(i),str,str & "_uni")
gTs file,newfname,"Shift-JIS","Unicode"
next
set fso=nothing
msgbox "Complete" & Files.Count & "pieces"
WScript.Quit
看代码可以发现, 其实也就是把文件编码从 Shift-JIS
改成了 Unicode
, 至于软件乱码就没这么简单了.
Unicode
为 UTF-16, 还可以改成UTF-8
.
把前一个编码换成GBK
再把输出文件名的 _uni 后缀去掉就是一个完美的覆盖另存为脚本啦 (原文件记得先存档
没有评论