求教fs.writeSync
现在要做压缩和解压缩,用的是adm-zip。 现在碰到个问题,我的解压缩出来的文件含中文乱码。 我看了adm-zip的底层代码,发现它是用buffer来写入,如下代码所示:
function(path, content, overwrite,attr) { if (fs.existsSync(path)) { if (!overwrite) return false; // cannot overwite
var stat = fs.statSync(path);
if (stat.isDirectory()) {
return false;
}
}
var folder = pth.dirname(path);
if (!fs.existsSync(folder)) {
mkdirSync(folder);
}
var fd;
try {
fd = fs.openSync(path, 'w', 438); // 0666
} catch(e) {
fs.chmodSync(path, 438);
fd = fs.openSync(path, 'w', 438);
}
if (fd) {
fs.writeSync(fd, content, 0, content.length, 0);
fs.closeSync(fd);
}
fs.chmodSync(path, attr || 438);
return true;
}
我看了fs.writeSync的API说明,发现没有转中文的方式,请问有什么解决方法么?谢谢~
1 回复
其实你保存在文件中的时候,都是用二进制保存的,根本没有中文编码这种说法。 只是应用程序在读取的时候,分析该文件是哪种编码,就用指定的编码进行读取。 node不支持gb2312,但是你可以用utf8保存。
var buff=new Buffer(3) buff.write(‘中’); 这样buff中就有了三个字节,将三个字节保存到文件就可以了