javascript - Node.js readdir() 中的特殊字符

标签 javascript node.js fs

我在 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 格式,但 Node 将它们读取为 utf8。尝试使用iconv从 iso 转换为 utf8。

关于javascript - Node.js readdir() 中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7738430/

相关文章:

javascript - 如何将提取放入 Promise 中?

javascript - 使用 Node.js Express 发布 JSON 对象时出现 MongoDB 格式错误

javascript - Bootstrap .dropdown() "Uncaught TypeError: undefined is not a function"

node.js - 按主机名进行条件端口转发

node.js - 错误 : ENOENT: no such file or directory, 取消链接

javascript - 重新开始写入流 nodejs

node.js - 在 fs.readFile() 的回调中使用 Email.send 时出现 Meteor "fiber"错误

javascript - 如何等到道场的元素存在?

javascript - 使用 jquery.animate() 和 jquery.scroll() 反转由动画效果引起的 CSS 变化

javascript - 无法加载资源:net::ERR_CONTENT_LENGTH_MISMATCH(PHP错误)