node.js中的特殊字符readdir()

Special characters in node.js readdir()

本文关键字:readdir 特殊字符 js node      更新时间:2023-09-26

我在node.js中运行这段代码是为了查看目录中的文件并查看它们的统计信息:

var getFiles = function (dir, done) {
  fs.readdir(dir, function (err, files) {
    if (err) return done(err);
    var pending = files.length;
    files.forEach(function (file) {
      fullPath = dir + "/" + file;
      console.log(fullPath);
      fs.stat(fullPath, function (err, stat) {
        if (err) {
          console.log("Stat error");
        } else if (stat && stat != undefined) {
          console.log("Success");
        }
      });
    });
  });
}

我的问题是文件名包含特殊字符。我是瑞典人,所以有很多网站是, ä和ö。当fullPath输出大多数文件名时,它的输出是正确的,但是当文件名包含特殊字符时,该字符将显示为"?",然后显示为fs。Stat失败,因为它找不到文件。我错过了什么?我在Windows上运行v0.5.7版本。

我认为问题在于Windows将文件名编码为ISO-whatever,但node将其读取为utf8。尝试使用iconv将iso转换为utf8