nodejs文件名乱码
时间: 2023-12-03 18:41:07 浏览: 89
中文文件名乱码
当在Node.js中使用中文文件名时,可能会出现乱码的问题。这是因为Node.js默认使用的文件名编码是UTF-8,而Windows系统默认使用的文件名编码是GBK。为了解决这个问题,可以使用以下两种方法:
1.使用iconv-lite模块将文件名从GBK编码转换为UTF-8编码。示例代码如下:
```javascript
const iconv = require('iconv-lite');
const fs = require('fs');
const filename = '中文文件名.txt';
const utf8Filename = iconv.decode(iconv.encode(filename, 'gbk'), 'utf-8');
fs.readFile(utf8Filename, (err, data) => {
if (err) throw err;
console.log(data.toString());
});
```
2.在HTTP响应头中设置Content-Type为text/html;charset=utf-8,以告诉浏览器使用UTF-8编码解析文件名。示例代码如下:
```javascript
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
const filename = '中文文件名.txt';
res.setHeader('Content-Disposition', `attachment; filename*=UTF-8''${encodeURIComponent(filename)}`);
res.setHeader('Content-Type', 'text/html; charset=utf-8');
fs.createReadStream(filename).pipe(res);
}).listen(3000);
```
阅读全文