nodejs adm-zip 解压文件 中文文件名乱码 问题解决

时间:2021-08-28 13:22:38

 修改需要使用到iconv-lite包 (npm安装即可),修改 zipEntry.js 文件中的 entryName 方法

var iconv = require('iconv-lite');

var nameTemp = iconv.decode(val, 'GBK');// 新增
_entryName = Utils.toBuffer(val);
var lastChar = _entryName[_entryName.length - 1];
_isDirectory = (lastChar == 47) || (lastChar == 92);
_entryHeader.fileNameLength = _entryName.length;
_entryName = nameTemp;// 新增

 上面那种方法处理文件名正常了,结果文件内容中文还是乱码。发现另一个好用的插件

npm install adm-zip-iconv 

使用方法比较简单比上面那种方法好些。

var zip = new AdmZip("./my_file.zip", "GBK");