Debian 上 JS 日志出现乱码,通常不是 JS 本身的问题,而是字符编码 / 区域环境(locale)/ 终端不一致导致的。下面按最常见原因给你梳理一下。
Debian 默认有时是:
LANG=C
LC_ALL=C
这会导致:
locale
如果看到:
LANG=C
LC_CTYPE="C"
就有问题。
sudo apt install locales
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
或
zh_CN.UTF-8
然后:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
即使服务器是对的,客户端也可能乱码。
例如 PuTTY:
Window → Translation → Remote character set = UTF-8
file app.log
如果是:
UTF-8 Unicode text
但你在 GBK 终端看 → 乱码
iconv -f UTF-8 -t GBK app.log
例如:
fs.writeFileSync('log.txt', '中文', 'binary')
✅ 正确:
fs.writeFileSync('log.txt', '中文', 'utf8')
Node 默认是 UTF-8,一般不用指定。
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
[Service]
Environment=LANG=en_US.UTF-8
否则日志(journalctl)也会乱码。
locale
echo "中文测试"
node -e "console.log('中文测试')"
如果:
echo 正常,Node 乱码 → Node/locale 问题如果你愿意,可以把:
发出来,我可以直接帮你定位到具体原因。