在Debian上解决Tomcat乱码问题,需从系统环境、Tomcat配置和Web应用三方面统一编码为UTF-8,具体步骤如下:
设置系统默认编码为UTF-8
执行命令:
sudo dpkg-reconfigure locales
在界面中选择 zh_CN.UTF-8,确认后重启系统使配置生效。
修改Tomcat配置文件
<Connector>标签中添加URIEncoding="UTF-8",确保GET请求参数正确解码。<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" ... />
java.util.logging.ConsoleHandler.encoding = UTF-8
配置JVM参数
编辑bin/catalina.sh(Linux)或bin/catalina.bat(Windows),在JAVA_OPTS中添加:
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
保存后重启Tomcat。
检查Web应用编码
web.xml中添加字符编码过滤器,强制处理POST请求参数。<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>
<url-pattern>/*</url-pattern>
</filter-mapping>
<%@ page contentType="text/html;charset=UTF-8" %>声明编码。验证与调整
重启Tomcat后,访问应用检查乱码是否消失。若仍有问题,可通过查看catalina.out日志,确认编码配置是否生效。
注意:避免直接修改系统默认locale为非UTF-8编码(如zh_CN.GBK),可能导致系统工具兼容性问题。优先通过Tomcat配置和JVM参数隔离编码设置。