在 CentOS 系统下,Tomcat 乱码问题通常是由于字符编码设置不一致导致的。以下是一些建议来解决这个问题:
在 Tomcat 的启动脚本(如 catalina.sh
)中添加以下内容:
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
这将会设置 Tomcat 的默认字符编码为 UTF-8。保存更改并重新启动 Tomcat。
在 Tomcat 的 conf
目录下找到 server.xml
文件,打开并找到以下内容:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
在 <Connector>
标签中添加 URIEncoding="UTF-8"
属性,如下所示:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
保存更改并重新启动 Tomcat。
在您的 Web 应用的 WEB-INF
目录下找到 web.xml
文件,打开并添加以下内容:
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这里我们使用了 Spring 的 CharacterEncodingFilter
来设置请求和响应的字符编码。如果您的项目中没有使用 Spring,您可以使用其他类似的过滤器或拦截器来实现这个功能。保存更改并重新启动 Tomcat。
尝试以上方法后,您的 Tomcat 乱码问题应该得到解决。如果仍然存在问题,请检查您的应用程序代码以确保没有硬编码的字符编码设置。