在 Debian 上修改 Tomcat 的编码(默认字符集),通常是为了解决中文乱码或请求/响应编码不一致的问题。下面按常见场景说明做法。
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-8useBodyEncodingForURI="true":URI 使用 request 的编码修改后重启 Tomcat:
sudo systemctl restart tomcat9
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
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
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 |
如果你愿意,可以告诉我:
我可以给你精确配置文件和路径。