![](/img/trans.png)
[英]What's the encoding should I use to “gzuncompress()” in node.js?
[英]PHP's gzuncompress function in node.js
所以我得到了一些用 PHP 的 gzcompress 方法压缩的数据: http://us2.php.net/manual/en/function.gzcompress.php
如何从 node.js 解码这些数据?
我试过“compress”、“zlib”和其他几个节点压缩库,但似乎没有一个能识别数据。
例如,zlib 只是给我“错误:不正确的 header 检查”
答:原来“zlib”是通往 go 的方式。 我们遇到了来自 memcache 的二进制数据的另一个问题。 如果您在 node.js 缓冲区 object 中有二进制数据,并且您调用 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 的相关问题非常相似?
从另一个帖子中窃取( 在 PHP 中使用哪种压缩方法? )
因此,“zlib”将是正确的选择。 这与 gzip 不交叉兼容。
php:
<?php
$data = 'HelloWorld';
$gzcompress = gzcompress($data);
$gzcompress_base64_encode = base64_encode($gzcompress);
echo "Compressing: {$data}\n";
echo $gzcompress."\n";
echo $gzcompress_base64_encode."\n";
echo "--- inverse ---\n";
echo gzuncompress(base64_decode($gzcompress_base64_encode))."\n";
节点:
const zlib = require('zlib');
var data = 'HelloWorld';
var z1 = zlib.deflateSync( Buffer.from(data));
var gzcompress = z1.toString();
var gzcompress_base64_encode = z1.toString('base64');
console.log('Compressing '+data);
console.log(gzcompress);
console.log(gzcompress_base64_encode);
console.log('--- inverse ---');
console.log(zlib.inflateSync(Buffer.from(gzcompress_base64_encode,'base64')).toString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.