1

ディレクトリ内のファイルを表示し、それらの統計を表示するために、このコードを 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 を実行しています。
前もって感謝します。

4

1 に答える 1

0

問題は、Windowsがファイル名をISOとしてエンコードするが、ノードがそれらをutf8として読み取ることだと思います。iconvを使用して iso から utf8 に変換してみてください。

于 2011-10-30T22:07:26.350 に答える