本篇内容如下,主要解决各种乱码问题。
综合解决措施,直接跳转到文末
数据的流动,是从浏览器页面->Java后台程序->数据库
乱码的发生,一般原因是编解码的字符集不统一造成的。也就是这三者之间数据流动时,字符集不统一造成的。
记录一下最近遇见过的几种乱码问题。
一、浏览器页面乱码
1、现象:浏览器页面乱码
问题:正常的SSM项目,启动后页面出现中文乱码。
分析:可能是使用了tomcat高版本导致的乱码问题。
解决:IDEA中-edit configurations-VM options设置:-Dfile.encoding=UTF-8
二、Debug后台获取到的中文数据乱码
2、现象:发现数据乱码后,debug发现Java后台程序中接收的时候就已经出现了乱码。
分析:在Java后端程序中,解析前端参数和数据前,需要指定字符集;否则就会出现乱码。
在J2EE中,需要request.setEcoding,并且该指令需要在获取任意参数最前面执行。
在SSM等框架中,则是在配置文件中,设置拦截器,指定编码字符集为UTF-8。
三、数据库存储中文乱码
3、现象:Java后端程序debug是正常显示中文,但数据库中存储时,中文变成了乱码。
分析:数据库字符集错误,或者没有指定存储的时候字符集。
解决:
这里需要注意。与数据库连接的URL中,一定要设置如下:
url=jdbc:mysql://localhost/user_test?useUnicode=true&characterEncoding=utf-8
需要带有后缀:设置字符集且指定为UTF-8。
另外,网上其它资料,如:
1、在命令行中设置MySQL的编码格式,将latin改为UTF-8;
2、查看数据库建库语句,数据库建立的时候,是否指定了字符集为UTF-8;
但是,一定要确保了了URL中指定了字符集,这个是首要前提。
因为,经过尝试,即使尝试过后面两种方式,确定是UTF-8后,乱码问题仍然存在。
最终,修改了URL,在URL中添加了指定字符集后缀,才解决了中文存入数据库乱码问题。
四、其它乱码问题:
1、控制台 tomcat catalina log乱码问题。
2、控制台 tomcat local log乱码问题。
修改tomcat配置文件logging.properties,将此文件中所有的编码格式均指定为GBK则可以解决以上两个问题。
有些教程说修改所有编码为GBK,有些说保持UTF-8不要修改,暂时还未搞清究竟应该设置哪个。
但这里的配置,对以上两项是否输出乱码是有影响的,这是确定的。
配置如下,有些tomcat的logging.properties是不完整的,不同版本不一样。
根据网上教程完善指定编码,或者直接如下添加,应该都可。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
五、idea编译乱码(解决server控制台输出中文乱码)
1、据网上资料,在idea的bin目录下进行文件编码修改是不生效的;
在两个文件末尾加上 -Dfile.encoding=UTF-8(bin目录下修改不生效,被覆盖)
原因:
idea的bin目录下的idea64.exe.vmoptions和idea.exe.vmoptions两个文件的修改是不会生效的,会被C盘下idea文件中的idea64.exe.vmoptions配置给覆盖。
而在idea中help - Edit Custom VM Options中的配置文件,是关联C盘下idea的idea64.exe.vmoptions文件的,所以修改直接生效。
相当于,运行的时候,以C盘下的idea64.exe.vmoption为准,加载这个配置文件(大概是这个道理)。
2、直接在idea中,上方工具栏 - Help - Edit Custom VM Options中,添加 -Dfile.encoding=UTF-8,然后重启IDEA。
六、Tomcat服务乱码
tomcat - conf - server.xml
进行如下修改
----------------------------------------------------------------------
======================================
总而言之:
七、出现乱码问题,综合解决措施如下:
1、help - Edit Custom VM Options 中添加 -Dfile.encoding=UTF-8;
2、Edit Configuration - VM Option,添加 -Dfile.encoding=UTF-8;
3、修改tomcat - conf - server.xml,指定编码(方法参考上文);
4、修改logging.properties,指定所有编码(方法参考上文)。
总而言之,乱码问题就是各个开发工具中字符集不统一造成的。