最近在使用Nodejs導出下載文件時,遇到了中文文件名亂碼問題,因而Google搜索+驗證得出如下解決方案: chrome
var filename = 'Nodejs中文指南.pdf'; var userAgent = (req.headers['user-agent']||'').toLowerCase(); if(userAgent.indexOf('msie') >= 0 || userAgent.indexOf('chrome') >= 0) { res.setHeader('Content-Disposition', 'attachment; filename=' + encodeURIComponent(filename)); } else if(userAgent.indexOf('firefox') >= 0) { res.setHeader('Content-Disposition', 'attachment; filename*="utf8\'\'' + encodeURIComponent(filename)+'"'); } else { /* safari等其餘非主流瀏覽器只能自求多福了 */ res.setHeader('Content-Disposition', 'attachment; filename=' + new Buffer(filename).toString('binary')); }
親測瀏覽器:IE7+, Chrome29+, Firefox18+, Safari5.1+ 下載中文文件名正常!! 瀏覽器