Linux 下 JS(Node.js / 前端构建 / 浏览器日志)出现乱码,通常不是 JS 本身的问题,而是字符编码、终端、文件、环境不一致导致的。下面按常见场景给你一套排查+解决方法。
䏿–‡ → 典型 UTF-8 被当成 Latin1/GBK???? → 编码丢失(通常是非 UTF-8)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
永久解决(推荐):
# CentOS / Ubuntu
sudo vim /etc/profile
# 添加
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
或用户级:
echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc
但以下情况会乱:
fs.readFileSync('log.txt') // 默认 UTF-8
如果文件是 GBK:
const iconv = require('iconv-lite');
const buf = fs.readFileSync('log.txt');
console.log(iconv.decode(buf, 'gbk'));
检查:
node -e "console.log('中文')"
同上,locale 检查
chcp 65001
在启动命令前加:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
file log.txt
iconv -f gbk -t utf-8 log.txt > log.utf8.txt
确保:
Content-Type: application/json; charset=utf-8
Node 示例:
res.setHeader('Content-Type', 'application/json; charset=utf-8');
✅ 终端 UTF-8
✅ 文件 UTF-8(无 BOM)
✅ Node 默认编码
✅ HTTP 明确 charset
你可以告诉我:
我可以直接给你对应命令或代码。