nodejs 解壓文件,當文件名為中文名時會出現亂碼
一開始我是使用compressing 去解壓的,后面一直出現亂碼,于是換了個解壓的包 yauzl
具體實現步驟:
安裝
npm install yauzl
2. 封裝了個解壓文件方法
function unzip(zipFileName, outputDir){ const yauzl = require('yauzl') return new Promise((resolve, reject) => { if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } yauzl.open(zipFileName, {lazyEntries: true}, function(err, zipfile) { if (err) reject(err); else { zipfile.readEntry(); zipfile.on("entry", function(entry) { if (/\/$/.test(entry.fileName)) { var dir = path.join(outputDir, entry.fileName); if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } zipfile.readEntry(); } else { zipfile.openReadStream(entry, function(err, readStream) { if (err) reject(err); else { var fileName = path.join(outputDir, entry.fileName); readStream.pipe(fs.createWriteStream(fileName)); readStream.on("end", function() { zipfile.readEntry(); }); } }); } }).on("close",function(){ resolve("解壓完成"); }); } }); }); }
3. 調用
unzip(zipPath, outputPath).then(msg => console.log(msg)).catch(err => console.error(err)); // zipPath 是要解壓的文件路徑 outputPath是要輸出的目錄
使用以上方法即可解決亂碼問題