你这个问题比较简短,我分几种常见场景给你说明,基本能覆盖 90% 的 Node.js 在 Linux 下“日志编码异常”的情况。
䏿–‡)? 或 \uXXXXNode.js 默认使用系统 locale。
查看:
locale
如果不是 UTF-8(如 C 或 POSIX),就会乱码。
✅ 解决:
sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
重启服务或终端。
❌ 错误:
fs.writeFileSync('log.txt', '中文日志')
✅ 正确:
fs.writeFileSync('log.txt', '中文日志', 'utf8')
读取也一样:
fs.readFileSync('log.txt', 'utf8')
部分日志库写文件时不强制 UTF-8,依赖系统。
✅ winston 示例:
const transport = new winston.transports.File({
filename: 'app.log',
options: { encoding: 'utf8' }
})
Docker 默认是 C
✅ Dockerfile:
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
或:
ENV LANG=zh_CN.UTF-8
echo $LANG 应为 *.UTF-8echo $LANG
node -e "console.log('中文测试')"
如果:
你可以直接贴:
我可以精准定位并给你最小修改方案。