node-archiver 压缩包的中文文件名变乱码
发布于 6 年前 作者 lin-xin 3486 次浏览 来自 问答

在 koa 中使用 node-archiver 模块进行打包压缩

const zip = archiver('zip');
zip.pipe(fs.createWriteStream('1.zip'));

const file = '1 - 副本.log';
zip.append(fs.createReadStream(file), {
    // 命名中含有中文
    name: file 
})
await zip.finalize();

在服务器端打包压缩,提供前端下载,文件名含有中文的话,下载下来解压,文件名乱码(需求是必须保留原文件名):

TIM截图20180328171020.png

请问有没有大佬知道如何解决?

5 回复

@xadillax 我试了 iconv.decode(file, ‘gbk’) ,变了更乱的码了。。是不是用错了

  • 可能zip不支持中文名宽字节编码
  • 可能服务器压缩采用的是utf8编码,客户端解码时采用的本地编码(gbk)导致乱码

@waitingsong 我换了用 adm-zip 模块,也是会这样,不知道有没有办法解决?

最后升级了电脑的 WinRAR 软件就可以了。。。

回到顶部