javascript - 有没有办法使用 JavaScript 检查文件编码?

标签 javascript utf-8 character-encoding encode ansi

这是我的案例:我正在处理一个包含大量文件的非常大的项目。其中一些文件以 UTF-8 编码,其他以 ANSI 编码。我们需要将所有文件转换为 UTF-8,因为我们决定这将是我们下一个项目的默认设置。 这是一个大问题,因为我们是巴西人,我们有使用 á、ç、ê、ü 等字符的常用词。因此,在多个字符集编码中使用多个文件会产生一个严重的问题。

无论如何,我来到了这个将ANSI文件转换为UTF-8的JS文件,将它们复制到另一个文件夹并保留原件:

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”文件夹运行。我仍在考虑以一种简单的方式让它进入该文件夹中的文件夹并在那里运行。

最佳答案

您的 UTF-8 文件是否有字节顺序标记?在那种情况下,您可以简单地检查前 3 个字节的值以确定文件是否为 UTF-8。否则,标准方法是一直检查文件是否为合法的 UTF-8,如果是,则很可能应该将其读取为 UTF-8。

关于javascript - 有没有办法使用 JavaScript 检查文件编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073759/

相关文章:

php - Div刷新和滚动条问题

javascript - 支持 jqGrid 中未知数量的层次结构

python - UnicodeDecodeError : 'utf-8' when debugging Python files in PyCharm Community

php - Sphinx - 在 sphinx 记录上调用 json_encode() 时参数错误中的 UTF-8 序列无效

c - 奇偶校验位和错误检测

javascript - 检查url是否有域名而不是ip

javascript - 未处理的拒绝(错误): Expected undefined to be a GraphQL schema

mysql - 如何在 Latin1 编码列中检测 UTF-8 字符 - MySQL

Python HTML 解析器 : UnicodeDecodeError

PHP Utf8 解码问题