这里是我的问题:我正在处理一个包含许多文件的大型项目。其中一些文件使用UTF-8编码,其他文件使用ANSI编码。我们需要将所有文件转换为UTF-8,因为我们决定在下一个项目中将其设为默认编码方式。
这是一个大问题,因为我们是巴西人,有很多常用单词中包含 á、ç、ê、ü 等字符。因此,多个文件使用不同的字符集编码会导致严重的问题。
无论如何,我找到了这个JS文件,它可以将ANSI文件转换为UTF-8,并将其复制到另一个文件夹并保留原始文件:
这是一个大问题,因为我们是巴西人,有很多常用单词中包含 á、ç、ê、ü 等字符。因此,多个文件使用不同的字符集编码会导致严重的问题。
无论如何,我找到了这个JS文件,它可以将ANSI文件转换为UTF-8,并将其复制到另一个文件夹并保留原始文件:
var indir = "in";
var outdir = "out";
function ansiToUtf8(fin, fout) {
var ansi = WScript.CreateObject("ADODB.Stream");
ansi.Open();
ansi.Charset = "x-ansi";
ansi.LoadFromFile(fin);
var utf8 = WScript.CreateObject("ADODB.Stream");
utf8.Open();
utf8.Charset = "UTF-8";
utf8.WriteText(ansi.ReadText());
utf8.SaveToFile(fout, 2 /*adSaveCreateOverWrite*/);
ansi.Close();
utf8.Close();
}
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(indir);
var fc = new Enumerator(folder.files);
for (; !fc.atEnd(); fc.moveNext()) {
var file = fc.item();
ansiToUtf8(indir+"\\"+file.name, outdir+"\\"+file.name);
}
我使用以下命令行运行这个程序:
cscript /Nologo ansi2utf8.js
问题在于,这个脚本会遍历所有文件,即使已经是UTF-8格式的文件也会被处理,导致特殊字符出现问题。因此,我需要检查文件编码是否已经是UTF-8格式,只有在编码为ANSI时才执行我的代码。如何做到呢?
此外,我的脚本只能在“in”文件夹中运行。我正在考虑一个简单的方法,让它进入该文件夹中的子文件夹并在其中运行。