Debian 上 Node.js 日志出现乱码,通常不是 Node.js 本身的问题,而是字符编码 / 终端环境不一致导致的。下面按常见原因和解决办法说明。
console.log('中文') 乱码cat 看乱码,但用编辑器正常Debian 默认可能是:
LANG=C
LC_ALL=C
C locale 不支持 UTF-8。
查看当前 locale:
locale
如果不是 UTF-8,设置:
sudo apt install locales
sudo dpkg-reconfigure locales
# 选择 zh_CN.UTF-8 或 en_US.UTF-8
或临时生效:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Node.js 默认使用 UTF-8,但如果:
就会乱码。
用 UTF-8 工具查看:
less log.txt
vim log.txt
或转换:
iconv -f UTF-8 -t GBK log.txt > log_gbk.txt
编辑:
sudo vim /etc/systemd/system/your-app.service
加:
Environment=LANG=en_US.UTF-8
Environment=LC_ALL=en_US.UTF-8
然后:
sudo systemctl daemon-reload
sudo systemctl restart your-app
错误示例:
fs.writeFileSync('log.txt', str, 'gbk');
Node.js 原生 不支持 gbk 写文件,需用 iconv-lite。
locale 是 UTF-8如果你愿意,可以贴:
locale 输出我可以更精准帮你定位。