![](/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.