温馨提示×

Debian Tomcat如何设编码

小樊
36
2026-08-05 08:46:48
栏目: 智能运维

Debian 下设置 Tomcat 的编码(字符集),通常需要从 系统环境、Tomcat 启动参数、应用配置 三个方面一起处理,否则很容易出现中文乱码。

下面按 最常见、最推荐 的方式说明(以 Tomcat 8/9/10 为例,Debian 10/11/12 通用)。


一、设置 Tomcat 启动编码(最关键)

1️⃣ 修改 Tomcat 启动参数(推荐)

编辑 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

二、设置 Tomcat 的 URI 编码(URL 中文参数)

2️⃣ 修改 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 请求中文乱码


三、设置请求与响应编码(POST 中文)

3️⃣ 在应用中设置(Servlet / Spring)

✅ Servlet 中

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

✅ Spring Boot / Spring MVC

server.servlet.encoding.enabled=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true

四、Debian 系统语言环境(建议检查)

4️⃣ 查看系统编码

locale

如果不是 UTF-8,建议设置:

sudo dpkg-reconfigure locales

选择:

en_US.UTF-8

或中文:

zh_CN.UTF-8

然后:

sudo update-locale
reboot

五、数据库编码(常见乱码来源)

如果是数据库乱码,还需确认:

  • MySQL / MariaDB:utf8mb4
  • JDBC URL:
useUnicode=true&characterEncoding=UTF-8

✅ 推荐最小配置(90% 情况够用)

# /etc/default/tomcat9
JAVA_OPTS="-Dfile.encoding=UTF-8"
<!-- server.xml -->
<Connector port="8080" URIEncoding="UTF-8" />

如果你愿意,可以告诉我:

  • Tomcat 版本
  • Debian 版本
  • 页面乱码 / 数据库乱码 / URL 中文乱码
  • 是否使用 Spring Boot / 普通 Servlet

我可以给你 精确到配置文件行数 的修改方案。

0