在 Debian 下设置 Tomcat 的编码(字符集),通常需要从 系统环境、Tomcat 启动参数、应用配置 三个方面一起处理,否则很容易出现中文乱码。
下面按 最常见、最推荐 的方式说明(以 Tomcat 8/9/10 为例,Debian 10/11/12 通用)。
编辑 Tomcat 的启动配置:
sudo nano /etc/default/tomcat9
如果是 Tomcat 8,文件可能是
/etc/default/tomcat8
在文件中添加或修改:
JAVA_OPTS="-Dfile.encoding=UTF-8"
✅ 这是 最重要的一步,保证 JVM 默认使用 UTF-8。
保存后重启 Tomcat:
sudo systemctl restart tomcat9
server.xml(处理 GET 请求中文)编辑 Tomcat 配置文件:
sudo nano /etc/tomcat9/server.xml
找到 <Connector> 配置(通常是 8080 端口),添加 URIEncoding="UTF-8":
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
如果是 HTTPS:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
URIEncoding="UTF-8">
保存后重启:
sudo systemctl restart tomcat9
✅ 解决 GET 请求中文乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
server.servlet.encoding.enabled=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
locale
如果不是 UTF-8,建议设置:
sudo dpkg-reconfigure locales
选择:
en_US.UTF-8
或中文:
zh_CN.UTF-8
然后:
sudo update-locale
reboot
如果是数据库乱码,还需确认:
utf8mb4useUnicode=true&characterEncoding=UTF-8
# /etc/default/tomcat9
JAVA_OPTS="-Dfile.encoding=UTF-8"
<!-- server.xml -->
<Connector port="8080" URIEncoding="UTF-8" />
我可以给你 精确到配置文件行数 的修改方案。