javascript - 如何在 node.js 中解压缩 .gz 字符串

标签 javascript node.js gzip zlib

我正在从远程服务器下载一个 .csv.gz 文件,我将该文件的内容存储为一个字符串。这是我在 console.log 时看到的一小部分示例:

�}�v������)��t�Y�j�8p0�eCR��

l��1�=���6������~̵r�����0c7�7L���������U:���0�����g��

我如何在 Node.js 中解压缩它,以便将其转换为原始 .csv 文件?

我已经尝试了 zlib.gunzip(Buffer.new(body), callback),但是我得到了一个错误

incorrect header check at Gunzip.zlibOnError (zlib.js:152:15)

文件本身是有效的,我可以在我的电脑上双击解压打开

我使用以下方法创建文件:zlib.createGzip(); 然后是 gzip.pipe(writeStream);


更新

(实际)问题是我的数据是 utf8 编码的,所以我需要确保它保持为缓冲区或二进制。

最佳答案

问题是fs.createWriteStream默认是utf-8编码,你应该把它改成binary,然后你会能够创建 gunzip 将乐于接受的有效缓冲区。

您可能可以通过将代码更改为:

gzip.pipe(data => writeStream(data, { encoding: 'binary'})

see https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options

关于javascript - 如何在 node.js 中解压缩 .gz 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48670665/

相关文章:

javascript - 粒子 JS 问题

python - 即时解压缩下载的 gzip 内容

javascript - JQuery .append() 内容不会保留在屏幕上

javascript - Webworker OffscreenCanvas 绘制常规图像

javascript addEventlistener "click"不工作

javascript - 如何从firebase上 Node 的父键获取子键

javascript - 用 Node.js 编写 JSON

javascript - 使用 Mongoose 引用未知模型类型的对象

javascript - 如何使用 javascript ajax 请求读取 xml.gz 文件?

python - 提取我的 .json.gz 文件时,会添加一些字符 - 并且该文件无法存储为 json 文件