修改需要使用到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");