如何读取包含非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
答案 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
重复六次,完全匹配无效字符的六次出现,很明显它不是原始字符串гитара
。