Node.js 是否可以使用nodejs加载ansi编码的字符串

Node.js 是否可以使用nodejs加载ansi编码的字符串,node.js,encoding,utf-8,ansi,hebrew,Node.js,Encoding,Utf 8,Ansi,Hebrew,我有大量的html文件(大约2k)。 这些html是从word文档转换而来的结果。 这些文件在html标记中有一些希伯来文文本。我可以使用vscode或notepad++编辑器完美地查看文本 我的目标是循环遍历文件夹,并将文件内容插入到一些数据库中。 因为我对nodejs有一点了解,所以我决定使用node构建“循环”。 到目前为止,我完成了以下工作: fs.readdir('./myFolder', function (err, files) { total = files.length

我有大量的html文件(大约2k)。
这些html是从word文档转换而来的结果。
这些文件在html标记中有一些希伯来文文本。我可以使用vscode或notepad++编辑器完美地查看文本

我的目标是循环遍历文件夹,并将文件内容插入到一些数据库中。 因为我对nodejs有一点了解,所以我决定使用node构建“循环”。 到目前为止,我完成了以下工作:

fs.readdir('./myFolder', function (err, files) {
    total = files.length;

    let fileArr = []
    for(var x=0, l = files.length; x<l; x++) {
      const content = fs.readFileSync(`./myFolder/${files[x]}`, 'utf8');    

      let title = content.match(/<title>(.*?)<\/title>/g).pop()

      fileArr.push({id:files[x] , title})
    }
});
fs.readdir('./myFolder',函数(err,files){
total=files.length;
让fileArr=[]

对于(var x=0,l=files.length;x这里有两种可能性,输入文件可能采用多字节编码(如utf8 utf16等),并且调试器由于字体限制而无法显示正确的字符

我会尝试将title变量写入某个测试文件,如下所示:

fs.writeFileSync(`title-test-${x}.txt`, title, "utf8");
并查看标题在文本编辑器中是否正确

文件也可能采用Windows 1255或ISO 8859-8等编码方式进行编码。如果是这种情况,fs.readFileSync将无法正常工作,因为它不支持这些编码(请参阅)

如果使用单字节扩展ascii编码对文件进行编码,则应该可以转换为更便于携带的编码(如utf8)

为此,我推荐这个模块,你可以用它做很多事情

例如,要将Windows 1255文件转换为utf8,您可以尝试:

    const iconv = require("iconv-lite");
    const fs = require("fs");

    // Convert from an encoded buffer to JavaScript string.
    const fileData = iconv.decode(fs.readFileSync("./hebrew-win1255.txt"),  "win1255");

    // Convert from JavaScript string to a buffer.
    const outputBuffer = iconv.encode(fileData, "utf8");

    // Write output file..
    fs.writeFileSync("./hebrew-utf8-output.txt", outputBuffer);

太好了,很高兴能帮上忙!!