项目代码中前端页面乱码分析
项目背景
刚刚换了个新电脑,加入一个公司
开发工具是IDEA
前端jsp页面
后端spring 多模块maven项目
分页组件是jqGrid
其他同事从git上拉取代码后没有问题,只有我的打包部署上tomcat出现了乱码问题
排查步骤
- 检查是否是JQuery.jqGrid.min.js的保存格式问题,经过检查,是utf-8,不是保存的问题。
- 在看其他页面的时候,也有出现乱码的现象。猜想可能是打包的时候或者复制到tomcat的时候使用了GDK编码,在IDEA的settings -》editor-》file encodings 里面,发现 project encoding是gdk,properties file 是gdk,修改以后重启tomcat.发现还是乱码。
- 打开tomcat的webapp文件夹,查看JQuery.jqGrid.min.js,编码是utf-8,那么问题可能就出现在tomcat上。
- 有人说更改tomcat 中server.xml的URIencoding,但这个是处理get请求里的中文参数编码,很明显不是我遇到的JS组件乱码的原因
- 在网上看到有人说修改tomcat bin文件夹下catalina.bat文件 的set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"就可以了
- 突然想到是不是缓存问题,打开无痕模式测试了一下,可以正常显示。
- 测试是否是因为修改了catalina.bat文件才产生的作用,删掉刚刚的更改,重启tomcat,可以正常运行,应该就是project encoding出现了问题
附录:好奇网上的那一句话是什么意思
Dfile.encoding=UTF-8 就是设置系统属性 file.encoding 为 UTF-8 file.encoding =文件编码
JAVA_OPTS :用来设置JVM相关运行参数变量的