温馨提示×

ubuntu tomcat日志乱码为何

小樊
36
2026-09-21 19:33:03
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志出现乱码,通常不是 Tomcat 本身的 bug,而是字符编码不一致导致的。下面按最常见原因 → 解决方式给你梳理。


一、最常见原因总结

1️⃣ Linux 终端 / SSH 编码不是 UTF-8

Ubuntu 默认是 UTF-8,但:

  • 你用的 SSH 客户端(如 Putty、Xshell)编码不是 UTF-8
  • 终端环境变量不对

✅ 检查:

locale

正常应类似:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

✅ 如果不是 UTF-8:

sudo apt install locales
sudo dpkg-reconfigure locales

en_US.UTF-8zh_CN.UTF-8


2️⃣ Tomcat 启动未指定 UTF-8(非常常见)

Tomcat 默认使用系统编码,如果是非 UTF-8,日志就乱。

✅ 修改 bin/catalina.sh(或 setenv.sh):

export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

或:

JAVA_OPTS="-Dfile.encoding=UTF-8"

重启 Tomcat 生效。


3️⃣ logging.properties 编码问题

Tomcat 使用 JULI 日志。

✅ 修改:

vi conf/logging.properties

确保有:

java.util.logging.ConsoleHandler.encoding = UTF-8

如果是文件日志:

1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

4️⃣ 应用本身输出乱码(JSP / Spring)

即使 Tomcat 正常,应用也可能乱码。

✅ JSP:

<%@ page contentType="text/html;charset=UTF-8" %>

✅ Spring Boot:

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true

5️⃣ 日志文件用错误编码查看

日志文件本身是 UTF-8,但你用 cat / vim 时终端不是 UTF-8。

✅ 验证文件编码:

file catalina.out

✅ vim 中:

:set encoding=utf-8

二、快速自检清单 ✅

检查项 命令
系统编码 locale
Tomcat 编码 `ps -ef
日志编码 file logs/catalina.out
SSH 客户端 设置为 UTF-8

三、最小必改(90% 情况)

# catalina.sh / setenv.sh
export JAVA_OPTS="-Dfile.encoding=UTF-8"
# logging.properties
java.util.logging.ConsoleHandler.encoding = UTF-8

如果你愿意,可以:

  • 乱码截图
  • locale + catalina.out 前几行

我可以直接帮你定位是哪一层编码错了。

0