在 Debian 上运行 Tomcat 出现乱码(中文乱码、日志乱码、页面乱码等),通常是字符编码不一致导致的。下面按常见场景给你一套排查 + 解决方案。
locale
如果不是 UTF-8,例如:
LANG=C
LC_ALL=
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
zh_CN.UTF-8
然后设置:
sudo update-locale LANG=en_US.UTF-8
重启服务器或重新登录。
catalina.sh编辑:
/etc/tomcat9/catalina.sh
# 或
/opt/tomcat/bin/catalina.sh
在文件开头加入:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
或在 JAVA_OPTS 中加:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
server.xml(解决 URL 乱码)<Connector
port="8080"
protocol="HTTP/1.1"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
<%@ page contentType="text/html;charset=UTF-8" %>
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.propertiesvi /etc/tomcat9/logging.properties
确保:
java.util.logging.ConsoleHandler.encoding = UTF-8
?useUnicode=true&characterEncoding=UTF-8
new InputStreamReader(in, StandardCharsets.UTF_8);
locale 是 UTF-8-Dfile.encoding=UTF-8URIEncoding="UTF-8"如果你能告诉我:
我可以给你更精确的解决方案。