node.js带编码的readdir

时间:2013-07-02 14:09:45

标签: node.js encoding

如何读取包含非utf-8字符的文件名的readdir(例如cp1251)?

fs.readdir("./dir1", function(err, files){
    console.log(files[0], new Buffer(files[0]));

});

响应: '忘记( ).mp3',缓冲区&lt; 46 6f 72 67 65 74 20 28 ef bf bf ef bf ef bf bf ef bf bf ef bf bf ef bf bd 29 2e 6d 70 33&gt; < / p>

upd:文件是以cp1251编码名称

从proftpd上传的
# ls dir1
Forget (������).mp3

UPD2:

ls dir1 | iconv -f cp1251 -t utf8
Forget (гитара).mp3

1 个答案:

答案 0 :(得分:0)

显然,通过FTP上传已经错误了...尝试手动重命名文件,然后重新运行你的Node.js应用程序。这一次,它应该工作: - )

您可以看到缓冲区中已经破坏了文件名:

46 6f 72 67 65 74 20 28 ef bf bd ef bf bd ef bf bd
ef bf bd ef bf bd ef bf bd 29 2e 6d 70 33

术语ef bf bd重复六次,完全匹配无效字符的六次出现,很明显它不是原始字符串гитара