Linux 日志出现乱码,通常是编码不一致或终端/工具不支持中文导致的。可以按下面思路一步步排查和解决。
file 日志文件
或
enca 日志文件
常见情况:
UTF-8 → 终端没设 UTF-8GBK / GB18030 → Linux 默认按 UTF-8 读,就会乱码echo $LANG
正常应为:
zh_CN.UTF-8
如果不是:
export LANG=zh_CN.UTF-8
永久生效:
vim ~/.bashrc
export LANG=zh_CN.UTF-8
iconv -f GBK -t UTF-8 日志文件 > 新文件.log
iconv -f GBK -t UTF-8 日志文件 | less
:set fileencoding=gbk
或
:e ++enc=gbk 文件名
java -Dfile.encoding=UTF-8 -jar app.jar
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
(Python3 基本不用管)
Docker 里常乱码:
ENV LANG=zh_CN.UTF-8
journalctl -u nginx --no-pager | iconv -f utf-8 -t utf-8 -c
在 /etc/rsyslog.conf:
$ActionFileDefaultTemplate RSYSLOG_FileFormat
并确保系统 LANG 是 UTF-8
你可以告诉我:
file 日志文件 的输出我可以直接给你对应命令。