温馨提示×

linux日志编码乱码咋办

小樊
36
2026-09-08 11:40:22
栏目: 智能运维

Linux 日志出现乱码,通常是编码不一致终端/工具不支持中文导致的。可以按下面思路一步步排查和解决。


一、先确认乱码原因

1. 查看文件编码

file 日志文件

enca 日志文件

常见情况:

  • UTF-8 → 终端没设 UTF-8
  • GBK / GB18030 → Linux 默认按 UTF-8 读,就会乱码

二、终端/SSH 乱码(最常见)

1. 设置终端为 UTF-8

  • SecureCRT / Xshell / Terminal:
    • 编码 → UTF-8
  • 本地环境变量检查:
echo $LANG

正常应为:

zh_CN.UTF-8

如果不是:

export LANG=zh_CN.UTF-8

永久生效:

vim ~/.bashrc
export LANG=zh_CN.UTF-8

三、日志本身是 GBK(非常常见)

方法 1:用 iconv 转换

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

方法 2:用 less 查看时转码

iconv -f GBK -t UTF-8 日志文件 | less

方法 3:vim 中切换编码

:set fileencoding=gbk

:e ++enc=gbk 文件名

四、程序写日志导致乱码

Java 示例

java -Dfile.encoding=UTF-8 -jar app.jar

Python 示例

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

(Python3 基本不用管)

容器环境

Docker 里常乱码:

ENV LANG=zh_CN.UTF-8

五、系统日志(rsyslog / journalctl)

journalctl 乱码

journalctl -u nginx --no-pager | iconv -f utf-8 -t utf-8 -c

rsyslog 中文乱码

/etc/rsyslog.conf

$ActionFileDefaultTemplate RSYSLOG_FileFormat

并确保系统 LANG 是 UTF-8


六、快速判断你属于哪种

你可以告诉我:

  1. 日志来源(系统 / 应用 / Docker)
  2. 乱码样子(方块 / 问号 / 怪字符)
  3. file 日志文件 的输出

我可以直接给你对应命令

0