查看jvm编码
可以通过代码确认当前jvm运行的编码
System.getProperty("file.encoding")
此参数是在jvm启动的时候就已经设置完成。如果没有手动设置file.encoding,会根据当前系统的编码指定。
如果在Windows下,file.encoding=”GBK”,
如果在Linux下,file.encoding=”UTF-8”。
注意:在Tomcat启动完成后,在程序中通过设置system property的方式是没有效果的,原因是jvm启动时读取file.encoding并cache,后续只使用启动时读取的编码。
修改jvm编码
Linux环境
在catalina.sh配置
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8"
Windows环境
在catalina.bat配置
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
结论
为了保持项目在不同的环境下运行正常,不出编码的问题,Tomcat启动的时候必须指定编码,设定的编码必须与开发的时候设置的编码一致。