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:常见中文乱码问题以及解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Java常见的乱码解决方式

java中文乱码常见解决方式

读取Properties文件以及中文乱码问题

第一个java程序中文乱码以及如何解决

java文件下载以及中文乱码解决

Java学习中遇到的中文乱码问题的整理和解决方法