Вот мой случай: я работаю с очень большим проектом, который содержит много файлов. Некоторые из этих файлов кодируются в UTF-8, другие в ANSI. Нам нужно конвертировать все файлы в UTF-8, потому что мы решили, что это будет по умолчанию в наших следующих проектах.
Это большая проблема, потому что мы бразильцы, и у нас есть общие слова, использующие такие символы, как á, ç, ê, ü и т. Д. Поэтому наличие нескольких файлов в нескольких кодировках charset создает серьезную проблему.
В любом случае, я пришел к этому файлу 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». Я все еще думаю о том, как сделать так, чтобы он заходил в папки, которые находятся в этой папке, и запускался там.