nodejs 如何读取文件编码信息
14 回复
不能保证识别的绝对准确。文件编码这个问题太复杂了,有各种各样的情况,涉及文件头、文件具体内容等等。 很简单的例子,文件内容可能分多次写入,每次写的时候用了不同编码; 又比如,有些字符(比如汉语拼音),你用文本文件打开看不出乱码,只不过是没显示出来,使用文本编辑器检测的编码是utf8,但实际上这些字符需要big5才能显示.
我只能苦逼的这样干了 ...
var str = iconv.decode(data, 'utf-8');
// 编码不对试着用GBK编码
if(str.indexOf('�') != -1){
str = iconv.decode(data, 'gbk');
}
@chihuohuo 跟我一样, 我检测文件的UTF8 BOM, 检测到是UTF8则继续,否则用GBK转换下
var data = fs.readFileSync(url);
if (data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF) {
// 说明是 utf8编码
}else{
// 一顿假设, 当作GBK
}