CNode

node-archiver 压缩包的中文文件名变乱码

问答
Llin-xin发布于8 年前最后回复8 年前5 回复4631 浏览0 收藏

在 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)

X
XadillaX#1·8 年前

推荐 iconv-lite

L
lin-xin#2·8 年前
引用 XadillaX推荐 iconv lite。

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

W
waitingsong#3·8 年前
  • 可能zip不支持中文名宽字节编码
  • 可能服务器压缩采用的是utf8编码,客户端解码时采用的本地编码(gbk)导致乱码
L
lin-xin#4·8 年前
L
lin-xin#5·8 年前

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

参与回复
登录后即可参与回复。登录