Java:常见中文乱码问题以及解决方案
Posted VipMao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:常见中文乱码问题以及解决方案相关的知识,希望对你有一定的参考价值。
关于乱码问题无非就是编码方式不同,导致“没法交流”,就会出现乱码,就好像,一个只会说中文的中国人和一个只会说英文的美国人,语言不同,没法交流,这就会产生“乱码”。解决方案就是:将编码方式改为一致。
下面总结常见的几种乱码问题以及解决方案:
一:jdbc连接数据库插入中文数据乱码问题
今天在通过jdbc连接数据库后,本打算在数据库插入一条中文数据,但是数据表中一直乱码,像这样:
中文使用???代替。
首先通过jdbc连接数据库后插入数据时,你应该保证以下三处的编码方式相同(推荐utf-8编码方式)
1:eclipse文件保存的编码方式 具体:windows——>preferences——>General——>Workspace-->找到编码方式-->修改。
2:数据库的编码方式或者说你数据表中字段的编码方式
3:jdbc连接的编码方式
前两点是一般都能想到的,但是第三点忽略则很容易导致数据中文乱码情况,第三条的解决方案就是将获取数据库连接改为:
String url="jdbc:MySQL://localhost:3306/数据库名?characterEncoding=utf-8
我们再运行程序,发现中文就显示正常了
二:浏览器显示乱码问题
很多人在servlet中明明用:
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
设置了编码方式,但是在用浏览器显示页面,还是会出现乱码,像我这样:
但是我们在Eclipse中运行就可以显示出中文,
原因在于:
你eclipse中设置的保存编码方式和浏览器的编码方式不一致所导致。
解决方案:
windows——preferences——General——Workspace找到这里修改或查看你的编码方式。
然后打开浏览器的如图:
设置和eclipse编码方式一致即可。
三:关于Hibernate操作数据库中文乱码问题
使用Hibernate向数据库插入中文数据时数据库中总是不显示中文字符,像这样:
中文字符用?代替。而且我们数据库字段的编码方式以及eclipse保存编码方式都设置了UTF-8,问题就出在了hibernate的默认编码方式不是UTF-8,这样就导致与数据库的编码方式不同出现乱码。
解决方案:
在hibernate.cfg.xml配置文件中设置与你数据库和项目相同的编码方式,这里是设置的utf-8,如下:
<property name="hibernate.connection.characterEncoding">utf-8</property>
这样再运行就可以了。
因此在使用Hibernate框架的项目中,以下3处的编码方式是必须统一的
1:配置文件hibernate.cfg.xml编码方式,上面已经给出
2:数据库字段编码方式
3:Eclipse文件保存的编码方式
以上是关于Java:常见中文乱码问题以及解决方案的主要内容,如果未能解决你的问题,请参考以下文章