Debian 上 JS(Node.js / 前端 / 日志系统)日志出现乱码,通常不是 JS 本身的问题,而是字符编码环境不一致导致的。下面按常见原因和解决方法说明。
Debian 默认可能使用:
LANG=C
LC_ALL=C
这不是 UTF-8,会导致中文日志乱码。
locale
如果看到:
LANG=C
LC_CTYPE=C
就可能乱码。
sudo apt update
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
重启服务或终端。
Node.js 默认使用 UTF-8,但如果:
就可能乱码。
console.log(process.env.LANG)
在启动前设置:
LANG=en_US.UTF-8 node app.js
或在 systemd 服务中:
[Service]
Environment=LANG=en_US.UTF-8
很多 Debian + Node 镜像默认是 C。
Dockerfile 中加:
ENV LANG=C.UTF-8
或运行:
docker run -e LANG=C.UTF-8 ...
如果:
iconv 转过file log.txt
iconv -f GBK -t UTF-8 log.txt > new.log
如:
需设置为 UTF-8。
如果是浏览器 console 乱码:
<meta charset="utf-8">
Content-Type: text/html; charset=utf-8
locale 是否是 UTF-8LANG如果你愿意,可以告诉我:
我可以帮你精确定位。