Node.js的readFile读取GBK编码的文件时,可能发生乱码。
解决思路是:
第一步:判断文件的类型是不是GBK编码
第二步:如果是GBK编码,将文件的Buffer转化为UTF-8
第一步:Node.js判断文件的类型是不是GBK编码let chardet = require('chardet');
chardet.detectFile('./gbk.html', function(err, encoding) {
let isGBK = false;
if(encoding === "Big5" || encoding === "GB18030" ){
isGBK = true;
}
});
第二步:如果是GBK编码,将文件的Buffer转化为UTF-8let iconv = require("iconv-lite");
let fs = require("fs");
fs.readFile("./gbk.html",function (err,data) {
if(isGBK){
data = iconv.decode(data,'gbk');
}
let base64Data = new Buffer(data).toString("base64");
});