在 Debian 上修改 Tomcat 的编码(字符集),常见场景有两类:Tomcat 自身日志/控制台编码 和 HTTP 请求/响应编码(最重要)。下面按常用方式说明。
setenv.sh(推荐)Debian 下 Tomcat 一般位于:
/etc/tomcat9/
/var/lib/tomcat9/
创建或编辑:
sudo nano /usr/share/tomcat9/bin/setenv.sh
(不同版本可能是 tomcat8 / tomcat10)
添加:
export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
保存后重启:
sudo systemctl restart tomcat9
server.xml(Connector 编码)编辑:
sudo nano /etc/tomcat9/server.xml
找到 <Connector>(如 8080 端口),添加:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
说明:
URIEncoding="UTF-8":GET 参数编码useBodyEncodingForURI="true":POST 与 GET 一致重启:
sudo systemctl restart tomcat9
web.xml 设置字符过滤(推荐)在应用的 WEB-INF/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
SHOW VARIABLES LIKE 'character_set%';
确保为 utf8mb4
request.getCharacterEncoding() 为 UTF-8如果你用的是 Tomcat 8 / 10 或 Spring Boot 内嵌 Tomcat,可以告诉我,我给你对应版本写法。