环境:win7 + tomcat 8.5
问题描述:web端一切正常,不管是返回页面的数据还是控制台打印的日志,都没乱码,给app提供的api接口返回乱码,然后就去百度,像什么 在tomcat的service.xml中修改编码的,那种可以直接忽略了
从来没有灵验了,然后就是修改catalina.bat 这个文件,加入utf8的编码(可自行百度),然后返回给api接口的数据不乱码了,但是tomcat控制台开始乱码,于是乎,又百度,然后分为两种解决办法:第一种是
如果用的eclipse或者ide这种开发工具,可通过设置 一直有 VM Options 这个属性,加入 -Dfile.encoding=UTF-8 进行解决,可百度的到,然后我的并么有解决,而且这种只是通过开发工具启动tomcat有用,第二种通过修改系统的utf编码;
2019年3月21日12:01:07 更新
乱码究其原因是编码问题,下面将win10下 解压版的tomcat8.5 的乱码问题解决方法列出来。
1 bin目录下的catalina.bat 文件,set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" 改为
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"
2 conf目录下的logging.properties的文件中,修改或加入
java.util.logging.ConsoleHandler.encoding = UTF-8
3 修改windows运行窗口的编码为utf-8
https://juejin.im/post/5bb23cc15188255c5121d499
至此,所有编码都已经改为了utf-8,乱码问题解决。
说一点:以上方法不适用所有的,具体要根据系统编码进行改变。
tomcat conf/server.xml文件中的编码,要使用urf-8,因为这个是用来和前台页面传至交互的接口。
catalina.bat是tomcat窗口,输出程序日志的编码
loggin文件中的编码,是tomcat本身的日志信息编码,比如tomcat的启动信息。