在 Linux 下,JS 日志乱码或编码不对,通常是文件编码、终端编码、或程序输出编码不一致导致的。下面按常见场景给你讲怎么“转”。
file 日志文件.log
或者更准一点:
enca 日志文件.log
# 或
uchardet 日志文件.log
常见结果:
UTF-8GBK / GB2312ISO-8859-1iconv -f GBK -t UTF-8 日志文件.log > 新日志.log
如果是 GB18030:
iconv -f GB18030 -t UTF-8 日志文件.log > 新日志.log
iconv -f $(uchardet 日志文件.log) -t UTF-8 日志文件.log > 新日志.log
iconv -f GBK -t UTF-8 日志文件.log -o 日志文件.log
检查终端编码:
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
fs.writeFileSync('log.txt', data, 'utf8');
读文件:
fs.readFileSync('log.txt', 'utf8');
Node 启动:
node app.js
如仍乱码,加:
node --experimental-vm-modules app.js
(极少需要)
tail -f 日志文件.log | iconv -f GBK -t UTF-8
如果是 浏览器控制台乱码:
Content-Type: text/html; charset=utf-8
✅ Linux 默认应该用 UTF-8
❌ 不要混用 GBK + UTF-8
❌ 不要直接 cat GBK 文件到 UTF-8 终端
如果你愿意,可以把:
file / locale 输出发出来,我可以直接帮你写精确转换命令。