日志出现乱码,通常是因为字符编码不一致或显示/存储环境不支持对应编码导致的。下面按常见原因给你梳理一下:
一、最常见原因:编码不一致
-
程序写日志的编码 ≠ 看日志时的编码
- 程序用
UTF-8 写
- 终端 / 编辑器用
GBK 打开
→ 中文直接乱码
-
系统默认编码不同
- Linux 默认
UTF-8
- Windows 控制台默认
GBK
- 日志在 Windows 上查看就容易乱
二、日志框架配置问题
- Logback / Log4j2 / slf4j 没有显式指定编码
默认可能用系统编码
- 示例(Logback 正确写法):
<encoder>
<pattern>%d %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
三、重定向或管道导致编码变化
java -jar app.jar > log.txt
- 不同 shell(bash / cmd / powershell)编码策略不同
- 文件本身是 UTF-8,但用 GBK 终端看就乱
四、来源数据本身就是乱码
- 从数据库、接口、消息队列拿到的数据已经是乱码
- 日志只是“如实记录”了错误内容
五、终端 / 工具问题
- SecureCRT、Xshell、IDEA、Notepad++ 编码设置不对
- 文件本身没问题,只是“看”的方式错了
快速排查建议
- 确认日志文件编码(Notepad++ /
file 命令)
- 确认程序写日志的编码
- 确认查看工具的编码
- 统一成 UTF-8(无 BOM)
如果你愿意,可以把:
- 使用语言 / 框架
- 日志片段(乱码示例)
- 运行环境(Linux / Windows)
发给我,我可以帮你精准定位是哪一步出的问题。