在 Debian 上运行 Tomcat 时出现日志中文乱码,通常不是“Tomcat 本身坏了”,而是字符编码不一致导致的。下面按最常见原因逐条说明,并给出解决办法。
Debian 默认可能是 C 或 POSIX,不是 UTF‑8。
locale
如果看到:
LANG=C
LC_ALL=
或没有 UTF-8,就可能乱码。
sudo apt install locales
sudo dpkg-reconfigure locales
选择:
zh_CN.UTF-8
en_US.UTF-8
并设为默认。
然后:
source /etc/default/locale
Tomcat 默认使用系统编码,如果系统不是 UTF‑8,日志就乱。
在:
$TOMCAT_HOME/bin/setenv.sh
加入:
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
export LANG=zh_CN.UTF-8
没有就新建,并赋予执行权限:
chmod +x $TOMCAT_HOME/bin/setenv.sh
Tomcat 默认使用 java.util.logging。
$TOMCAT_HOME/conf/logging.properties
添加或修改:
java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.FileHandler.encoding = UTF-8
如果你是:
<encoder>
<charset>UTF-8</charset>
<pattern>%d %level %msg%n</pattern>
</encoder>
<PatternLayout charset="UTF-8" pattern="%d %p %m%n"/>
即使 Tomcat 没问题,终端是 GBK 也会看起来乱码。
echo $LANG
locale 是否是 UTF‑8 ✅-Dfile.encoding=UTF-8 ✅logging.properties 是否 UTF‑8 ✅如果你愿意,可以把下面信息发我,我可以直接帮你定位:
我可以直接给你一份可复制的配置文件。