大家经常遇到乱码问题,我一般习惯性的把编码问题归结为两种:

    编码层面的乱码:指的是那些需要修改项目内的代码或配置来解决的乱码问题,比如有的时候从数据库获取的数据是乱码、发送ajax请求时,获取到的数据乱码等,这种都需要进行新增或修改适当代码或配置来解决;
    非编码层面的乱码:指的是那些修改项目外在的一些东西,比如服务器编码没有设置、开发环境中没有设置编码、开发工具编码问题等原因造就的乱码;

只要是出现了乱码,从上面两个角度采用排除法,一般乱码问题都会得到解决;首先判断是否是非编码层面的乱码,如果不是在进行编码层面乱码的解决,此处暂不涉及编码层面的乱码。非编码层面的乱码解决思路大同小异,在这里抛砖引玉,给大家的思路!

异常现象:昨天在导入一份商城代码时,遇到了一个问题:页面内容能正常显示,但是凡是通过JS实现动态显示、渲染的内容都呈现乱码,如下所示,可以发现在下面大部分内容可以正常显示,但是有些地方呈现乱码:

 

 

 

 
分析问题:既然会出现这些问题,肯定有共同点,通过查看对应页面的文件发现以上所有乱码处的内容只存在于JS中,且是JS中的静态内容,其余通过JS渲染的动态内容没有乱码问题,所以应该属于JS乱码问题;

解决过程:在网上也找过很多关于JS乱码方面的文章,发现都不好使,原因在于每个解决方案肯定是基于当事人所遇到的乱码问题做出的解决方式,可能不适合于你,后来琢磨到乱码问题肯定是开发过程中某处编码没有统一的问题,那么采用最笨的方式,就是把开发工具的编码、服务器编码、项目编码都统一,问题不就可以解决了,实验证明确实如此,好了,开始设置:

一、统一服务器编码,由于这里用的是Tomcat服务器,所以以tomcat为例进行设置,在服务器中有两处需要设置:

    找到tomcat的bin目录下的catalina.bat并编辑,新增-Dfile.encoding=utf-8
    找到tomcat的conf目录下的server.xml并编辑,修改你项目用到的端口所对应的Connector,比如我这边用到的是8080端口,那么修改后内容如下:

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="utf-8" />

二、设置开发工具编码,找到IDEA的安装文件夹的bin目录,如下所示:



我这里修改的是idea64.exe.vmoptions文件,通过编辑器编辑该文件,在文件内容单独起最后一行,输入

-Dfile.encoding=utf-8

三、设置全局和项目编码,如下图所示,图中标有数字的地方都需要设置:

 

 
四、设置TOMCAT启动项目时用到的VM option,如下图所示:

 


五、MAVEN项目编码设置,找到pom.xml文件中的properties元素,添加如下内容:

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

经过以上五处的设置相信可以解决大部分乱码问题,好了,就这么多!!

posted on 2020-03-05 14:49  锋齐叶落  阅读(16320)  评论(4编辑  收藏  举报