温馨提示×

为什么日志出现乱码

小樊
47
2026-09-18 14:54:43
栏目: 编程语言

日志出现乱码,通常是因为字符编码不一致显示/存储环境不支持对应编码导致的。下面按常见原因给你梳理一下:


一、最常见原因:编码不一致

  1. 程序写日志的编码 ≠ 看日志时的编码

    • 程序用 UTF-8
    • 终端 / 编辑器用 GBK 打开
      → 中文直接乱码
  2. 系统默认编码不同

    • 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++ 编码设置不对
  • 文件本身没问题,只是“看”的方式错了

快速排查建议

  1. 确认日志文件编码(Notepad++ / file 命令)
  2. 确认程序写日志的编码
  3. 确认查看工具的编码
  4. 统一成 UTF-8(无 BOM)

如果你愿意,可以把:

  • 使用语言 / 框架
  • 日志片段(乱码示例)
  • 运行环境(Linux / Windows)

发给我,我可以帮你精准定位是哪一步出的问题。

0