温馨提示×

linux js日志编码怎么转

小樊
44
2026-10-11 10:08:59
栏目: 编程语言

在 Linux 下,JS 日志乱码或编码不对,通常是文件编码、终端编码、或程序输出编码不一致导致的。下面按常见场景给你讲怎么“转”。


一、先确认日志当前是什么编码

file 日志文件.log

或者更准一点:

enca 日志文件.log
# 或
uchardet 日志文件.log

常见结果:

  • UTF-8
  • GBK / GB2312
  • ISO-8859-1

二、把日志编码转成 UTF-8(最常用)

1️⃣ GBK / GB2312 → UTF-8

iconv -f GBK -t UTF-8 日志文件.log > 新日志.log

如果是 GB18030:

iconv -f GB18030 -t UTF-8 日志文件.log > 新日志.log

2️⃣ 不知道原编码(自动识别)

iconv -f $(uchardet 日志文件.log) -t UTF-8 日志文件.log > 新日志.log

3️⃣ 覆盖原文件(小心)

iconv -f GBK -t UTF-8 日志文件.log -o 日志文件.log

三、Node.js / JS 程序输出日志乱码

情况 1:Node 输出到终端乱码

检查终端编码:

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

情况 2:Node 写文件时指定编码

fs.writeFileSync('log.txt', data, 'utf8');

读文件:

fs.readFileSync('log.txt', 'utf8');

情况 3:JS 控制台中文乱码(Windows 常见,Linux 少)

Node 启动:

node app.js

如仍乱码,加:

node --experimental-vm-modules app.js

(极少需要)


四、实时查看日志不乱码

tail -f 日志文件.log | iconv -f GBK -t UTF-8

五、Web 前端 JS 日志编码

如果是 浏览器控制台乱码:

  • 服务器响应头:
Content-Type: text/html; charset=utf-8
  • 文件本身是 UTF-8(无 BOM)

六、常见坑总结

✅ Linux 默认应该用 UTF-8
❌ 不要混用 GBK + UTF-8
❌ 不要直接 cat GBK 文件到 UTF-8 终端


如果你愿意,可以把:

  • 日志样本
  • file / locale 输出
  • Node 版本

发出来,我可以直接帮你写精确转换命令。

0 踩