温馨提示×

debian tomcat如何改编码

小樊
37
2026-10-27 00:26:15
栏目: 智能运维

在 Debian 上修改 Tomcat 的编码(默认字符集),通常是为了解决中文乱码或请求/响应编码不一致的问题。下面按常见场景说明做法。


一、修改 Tomcat 默认 URI / 请求编码(最常用)

1️⃣ 修改 server.xml(解决 GET 请求乱码)

编辑 Tomcat 配置文件:

sudo nano /etc/tomcat9/server.xml

(如果是 tomcat8,路径可能是 /etc/tomcat8/server.xml)

找到 <Connector> 配置,例如:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

修改为:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8"
           useBodyEncodingForURI="true" />

✅ 说明:

  • URIEncoding="UTF-8":GET 参数使用 UTF-8
  • useBodyEncodingForURI="true":URI 使用 request 的编码

修改后重启 Tomcat:

sudo systemctl restart tomcat9

二、设置 Tomcat 启动编码(JVM 编码)

2️⃣ 修改 setenv.sh(推荐)

创建或编辑:

sudo nano /usr/share/tomcat9/bin/setenv.sh

添加:

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

保存后:

sudo chmod +x /usr/share/tomcat9/bin/setenv.sh
sudo systemctl restart tomcat9

三、Web 应用层编码(必须配合)

3️⃣ 在代码中设置(Servlet / Spring)

Servlet

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

Spring Boot

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

四、日志编码(可选)

编辑:

sudo nano /var/lib/tomcat9/conf/logging.properties

确保:

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

五、快速检查当前编码

ps aux | grep tomcat

看是否有:

-Dfile.encoding=UTF-8

总结(最常见方案 ✅)

场景 修改位置
GET 乱码 server.xml → URIEncoding=UTF-8
JVM 编码 setenv.sh → -Dfile.encoding=UTF-8
POST 乱码 代码 request.setCharacterEncoding
日志乱码 logging.properties

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

  • Tomcat 版本(8 / 9 / 10)
  • 具体乱码场景(页面 / 数据库 / 日志)
  • 是否是 Spring Boot

我可以给你精确配置文件和路径。

0 踩