Специальные символы в node.js readdir () - PullRequest
1 голос
/ 12 октября 2011

Я запускаю этот фрагмент кода в 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 завершается ошибкой, поскольку не может найти файл. Что я пропустил? Я использую версию v0.5.7 для Windows.
Заранее спасибо.

1 Ответ

0 голосов
/ 31 октября 2011

Я думаю, что проблема в том, что Windows кодирует имена файлов как ISO, но узел считывает их как utf8. Попробуйте использовать iconv для преобразования из iso в utf8.

...