本篇内容如下,主要解决各种乱码问题。

综合解决措施,直接跳转到文末

数据的流动,是从浏览器页面->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是不完整的,不同版本不一样。

根据网上教程完善指定编码,或者直接如下添加,应该都可。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

java access数据库 乱码 javaweb写进数据库乱码_解决方案

 

 

五、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

进行如下修改

----------------------------------------------------------------------

java access数据库 乱码 javaweb写进数据库乱码_解决方案_02

 

 ======================================

总而言之:

七、出现乱码问题,综合解决措施如下:

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,指定所有编码(方法参考上文)。

 

总而言之,乱码问题就是各个开发工具中字符集不统一造成的。