Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法使用JavaScript检查文件编码?_Javascript_Utf 8_Character Encoding_Encode_Ansi - Fatal编程技术网

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

有没有办法使用JavaScript检查文件编码?,javascript,utf-8,character-encoding,encode,ansi,Javascript,Utf 8,Character Encoding,Encode,Ansi,我的情况是:我正在处理一个包含大量文件的非常大的项目。其中一些文件用UTF-8编码,另一些用ANSI编码。我们需要将所有文件转换为UTF-8,因为我们决定这将是我们下一个项目的默认设置。 这是一个很大的问题,因为我们是巴西人,我们有常用的单词使用字符,如á、ç、ê、ü等。因此,使用多个字符集编码的多个文件产生了一个严重的问题 无论如何,我来到了这个JS文件,它将ANSI文件转换为UTF-8,将它们复制到另一个文件夹并保留原始文件: var indir = "in"; var outdir = "

我的情况是:我正在处理一个包含大量文件的非常大的项目。其中一些文件用UTF-8编码,另一些用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”文件夹运行。我仍然在想一个简单的方法,让它进入这个文件夹中的文件夹并在那里运行。

你的UTF-8文件有字节顺序标记吗?在这种情况下,只需检查前3个字节的值即可确定文件是否为UTF-8。否则,标准方法是检查文件是否始终是合法的UTF-8,如果是,则很可能被视为UTF-8。

您在什么环境下执行此操作?我的第一个想法是JS可能不是适合这项工作的工具。我使用的是Windows7,我用PHP/JavaScript编写代码。我不知道这是否可以用另一种编程语言来复制,但事实并非如此,因为我可能不知道该怎么做。如果你做PHP,可能会考虑MbScript库: