在 Debian 上修改 Tomcat 的编码(默认字符集),通常是为了解决中文乱码、表单提交乱码等问题。下面按最常见、最推荐的方式说明。
catalina.sh编辑 Tomcat 启动脚本:
sudo nano /etc/default/tomcat9
# 或
sudo nano /opt/tomcat/bin/catalina.sh
添加或修改:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
✅ 影响:
server.xml路径示例:
sudo nano /etc/tomcat9/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 请求乱码useBodyEncodingForURI=true:POST 与 GET 一致web.xml 添加编码过滤器<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
locale
若不是 UTF-8:
sudo dpkg-reconfigure locales
选择:
en_US.UTF-8
或
zh_CN.UTF-8
sudo systemctl restart tomcat9
ps aux | grep tomcat
应看到:
-Dfile.encoding=UTF-8
✅ 必改三项:
JAVA_OPTS=-Dfile.encoding=UTF-8URIEncoding="UTF-8"locale = UTF-8如果你说明:
我可以给你精准配置。