在 CentOS 系统下,Tomcat 乱码问题通常是由于字符编码设置不一致导致的。以下是一些建议来解决这个问题:
- 设置 JAVA_OPTS 环境变量
在 Tomcat 的启动脚本(如 catalina.sh
)中,添加以下内容以设置 JAVA_OPTS 环境变量,指定字符编码为 UTF-8:
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
然后重启 Tomcat 服务:
sudo systemctl restart tomcat
- 修改 server.xml 配置文件
在 Tomcat 的 conf
目录下找到 server.xml
文件,找到
标签,添加 URIEncoding="UTF-8"
属性,如下所示:
然后重启 Tomcat 服务:
sudo systemctl restart tomcat
- 修改 web.xml 配置文件
在每个 Web 应用的 WEB-INF
目录下找到 web.xml
文件,添加以下内容以设置字符编码过滤器:
CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true CharacterEncodingFilter /*
注意:这里使用了 Spring 的字符编码过滤器,如果你没有使用 Spring,可以使用其他字符编码过滤器,或者自己实现一个。
然后重启 Tomcat 服务:
sudo systemctl restart tomcat
- 检查操作系统的字符编码设置
确保操作系统的字符编码设置为 UTF-8。你可以通过以下命令查看当前的字符编码设置:
echo $LANG
如果输出结果不是 en_US.UTF-8
或类似的 UTF-8 编码,你可以通过修改 /etc/locale.conf
文件来设置字符编码:
LANG=en_US.UTF-8
然后重启系统使设置生效。
尝试以上方法后,Tomcat 乱码问题应该能得到解决。如果仍然存在问题,请检查你的应用程序代码中是否有硬编码的字符编码设置。