【发布时间】:2011-08-12 02:36:24
【问题描述】:
所以我得到了一些使用 PHP 的 gzcompress 方法压缩的数据: http://us2.php.net/manual/en/function.gzcompress.php
如何从 node.js 解码这些数据??
我尝试了“compress”、“zlib”和其他几个节点压缩库,但似乎没有一个能够识别数据。例如,zlib 只是给我“错误:不正确的标头检查”
答案:事实证明“zlib”是要走的路。我们遇到了来自 memcache 的二进制数据的另一个问题。如果你在 node.js Buffer 对象中有二进制数据,并且你调用 toString() 而不是 .toString('binary'),它会因为内容被转义或转义序列被解释或其他原因而受到各种扰乱。不幸的是,迄今为止我尝试过的所有 memcache 插件都假定来自 memcache 的字符串数据,并且没有规范地正确处理它。
我发现的最佳 ZLIB 模块:
https://github.com/kkaefer/node-zlib
// first run "npm install zlib", then...
var zlib = require('zlib');
var gz = zlib.deflate(new Buffer("Hello World", 'binary')); // also another 'Buffer'
console.log(zlib.inflate(gz).toString('binary'));
仅供参考,这个问题与有关 Java 的相关问题非常相似: PHP's gzuncompress function in Java?
【问题讨论】: