使用Node.js保存压缩的字符串

问题描述:

现在,我使用gzcompress来压缩一些数据并将其保存到PHP文件中。这是我的PHP代码。我将这个压缩的字符串保存到一个文件中,然后使用zlib从iOS打开它。使用Node.js保存压缩的字符串

$compressed_text = gzcompress($text, 9); 

我想用Node.js在JavaScript中做同样的事情,但我无法让它工作。这是我在Javascript中试图做的。

var input = new Buffer(text); 
zlib.deflate(input, function(error, output) { 
    var compressed_text = output.toString('ascii'); 
}); 

它无法使用Node.js从iOS解压缩这些数据。它适用于PHP,但我无法让它在Node.js中工作。我应该使用不同的方法而不是deflate

+0

我最好的猜测是这是一个编码问题。如果我只运行'zlib.deflateSync(input).toString()'(字符串编码默认为'utf-8'),那么输出看起来与PHP相同。所以我会尝试或更改iOS端的编码 – zinfandel

zlib输出是二进制的,所以你需要一些保留字节的方式。在节点中,最简单的方法是将其保存为Buffer。既然你提到将它保存到一个文件中,你可以这样做:

fs.writeFile(path, output, (err) => { 
    if (err) throw err; 
    console.log('Wrote data to disk'); 
});