写代码总会有神奇的事情发生。
在windows10部署自己的项目,eclipse编码格式为utf-8,server.xml 中也没有设置uriEncoding="utf-8"
不报乱码。
在服务器上搭建项目的时候,用tomcat中自带的startup.bat直接部署项目,发生乱码。
三种方法亲测,第一种加第三种方法解决了我的问题,第二种我没有找到Tomcat的注册表,不过还是发出来,让大家参考。
(还有一种办法,就是从AJAX请求获取数据的时候,设置utf-8中文编码,详情见常见问题之--ajax获取数据中文乱码问题最简单的完美解决方案)
进入正题,解决办法1:
可以直接在tomcat中的catalina.bat添加如下语句
set JAVA_OPTS=-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dfile.encoding=UTF8
rem %JAVA_OPTS%
如下图:
第一种方法非常方便,但是windows控制台还是会乱码。
解决办法2:修改cmd控制台的字符编码集
如果tomcat中有CodePage 那么修改十进制参数为65001 (utf-8)
如果没有则添加。
还有一项是修改jdk字符编码集。在系统环境变量中进行添加
在环境变量中添加JAVA_TOOL_OPTIONS选项,添加参数-Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US,
修改jdk编码后,cmd控制台就不会乱码了。
解决办法3:
1、找到~/conf/logging.properties
2、添加语句:java.util.logging.ConsoleHandler.encoding = UTF-8
改为:java.util.logging.ConsoleHandler.encoding = GBK,如果没有此语句,直接添加即可。
3、重启tomcat!
这是因为windows默认编码集为GBK,由于使用startup.bat启动tomcat时,它会读取catalina.bat的代码并打开一个新窗口运行。打开的cmd默认编码可能不是utf-8,与系统编码不一致,所以导致乱码