一般情况下,Debian 上 Node.js 的日志本身不会天然“乱码”,是否乱码主要取决于日志内容的字符编码、终端/文件查看方式、以及程序输出编码设置。
下面分情况说明:
Node.js(在 Linux / Debian 上)默认使用 UTF-8:
console.log() 输出的是 UTF-8en_US.UTF-8)✅ 正常情况不会乱码
例如:
现象:中文变成 ???? 或乱码方块
检查 Debian 编码:
locale
应该是:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
如果不是,可设置:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
例如:
vim 未设置 fileencoding解决:
:set encoding=utf-8
例如:
解决:
const iconv = require('iconv-lite');
const str = iconv.decode(buffer, 'gbk');
常见于:
LANGDocker 解决:
ENV LANG=C.UTF-8
PM2:
pm2 start app.js --env production
file your.log
如果是:
UTF-8 Unicode text
说明文件本身没问题,是查看方式的问题。
Debian + Node.js 默认不会乱码,乱码通常是:
如果你愿意,可以把:
发出来,我可以帮你精准定位原因。