Node.js 日志出现乱码,通常不是 Node 本身“写错了”,而是字符编码在“生成 → 传输 → 显示”某一环节对不上。下面按常见原因系统说明。
Windows cmd / PowerShell 默认编码常常是:
GBK(中文系统)CP936而 Node.js 默认输出是 UTF-8。
✅ 现象:
æˆ‘æ˜¯ä¸æ–‡
✅ 解决:
chcp 65001
或改用:
例如:
fs.writeFileSync('log.txt', '中文日志')
✅ 解决:
fs.writeFileSync('log.txt', '中文日志', 'utf8')
console.log(buffer) // <Buffer e4 b8 ad>
console.log(buffer.toString()) // 乱码
✅ 正确方式:
console.log(buffer.toString('utf8'))
fs.readFile('a.txt', (err, data) => {
console.log(data) // Buffer
})
✅ 正确:
fs.readFile('a.txt', 'utf8', (err, data) => {
console.log(data)
})
Content-Type: text/plain✅ 解决:
Content-Type: application/json; charset=utf-8
例如:
✅ 示例(winston):
new winston.transports.File({
filename: 'app.log',
encoding: 'utf8'
})
✅ 解决:
echo $LANG
如果不是:
zh_CN.UTF-8
✅ 解决:
export LANG=zh_CN.UTF-8
utf8?如果你愿意,可以贴:
我可以精准定位是哪一环节导致的乱码。