【问题标题】:Saving a compressed string using Node.js使用 Node.js 保存压缩字符串
【发布时间】:2026-01-10 14:05:01
【问题描述】:

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

$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

【问题讨论】:

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

标签: javascript php node.js zlib


【解决方案1】:

zlib 输出是二进制的,因此您需要某种方式来按原样保留字节。在节点中,最简单的方法是将其保留为Buffer。既然您提到将其保存到文件中,您可以这样做

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

【讨论】: