本文记录自己在解决tomcat运行 WEB时产生乱码的解决情况,一般情况在conf/service.xml和在bin/catalina.bat下修改,这两个方法很多文章可以参考。
我的情况是在eclipse中设置了workSpace编码为UTF-8,开发的时候没有乱码,直接通过tomcat启动就会有乱码,这就是JVM虚拟机运行环境编码设置问题,属于后台编码bug,不同的启动方式通过不同的设置方法来规范JVM编码。
本文包括在service.xml、catalina.bat和service.bat中修改UTF-8编码,不包括启动窗口里面的编码。
一、Service.xml中修改(前端后台的传输乱码)
当我们在前端和后台之间传输数据有乱码情况时,可以参考在conf/service.xml中进行以下设置。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
<!-- URIEncoding用于%XX编码之后解码的字符编码-->
URIEncoding="UTF-8"
<!--useBodyEncodingForURI使用http header中指定charset进行decode,默认值ISO-8859-1-->
useBodyEncodingForURI="true"/>
二、start.bat启动乱码(后台读写文件乱码)
当我们设置开发环境为UTF-8编码时,文件读写正常,通过bin/start.bat启动项目时文件读写产生乱码,则可以在bin/catalina.bat添加如下信息,设置中包括内存设置。
if not "%JSSE_OPTS%" == "" goto gotJsseOpts
set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
:gotJsseOpts
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8 -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=2
三、tomcat8.exe或者以后台服务的方式启动乱码(后台读写文件乱码)
首先开启service服务,通过cmd运行service.bat install安装服务,
点击tomcat8w.exe查看服务配置,
临时改变环境编码配置,在java栏中的java Options中加入新的一行-Dfile.encoding=UTF-8,拿到其他服务器需要重新配置。
永久添加编码配置,先卸载tomcat服务,在bin路径下,运行service.bat remove,
在service.bat中添加-Dfile.encoding=UTF-8如下图所示,记得分号隔开。
重新运行运行service.bat install安装tomcat服务。
至此,乱码问题终于解决。。。。。。。。。。狗狗Day~~~~~~~~~~~~~