Linux 日志出现乱码,通常不是日志本身坏了,而是字符编码不一致或终端/工具显示编码不对。下面按常见场景给你一套排查和解决思路。
??? 或方块:多半是编码不匹配tail / cat 看乱,vim 正常:终端编码问题file 日志文件
# 或
enca 日志文件
常见结果:
UTF-8ISO-8859 / GBK / GB2312export LANG=en_US.UTF-8
# 或
export LANG=zh_CN.UTF-8
查看当前:
locale
如果不是 UTF-8,可临时:
export LC_ALL=zh_CN.UTF-8
iconv -f gbk -t utf-8 原日志 > 新日志
less -R 日志
# 或
iconv -f gbk -t utf-8 日志 | less
:set fileencoding=utf-8
:wq
-Dfile.encoding=UTF-8
# 写日志时
open("log.txt", "w", encoding="utf-8")
[Service]
Environment=LANG=zh_CN.UTF-8
<encoder>
<pattern>%d %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
locale 是 UTF-8iconv 验证是否能正常转码如果你愿意,可以把:
file 日志发出来,我可以直接帮你定位是哪一层出的问题。