求教fs.writeSync
发布于 10 年前 作者 shadow88sky 5383 次浏览 最后一次编辑是 8 年前

现在要做压缩和解压缩,用的是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中就有了三个字节,将三个字节保存到文件就可以了

回到顶部