为什么用hibernate向mysql 数据库中添加的中文数据是乱码

为什么用hibernate向mysql 数据库中添加的中文数据是乱码,第1张

问题:用hibernate向mysql 数据库中添加的中文数据是乱码

getHibernateTemplate().save(book)

book类中无乱码。

存储后变成乱码。

错误原因:mysql编码错误解决方法:首先把你的页面设置成这个字符集

Window--Preferences--输入jsp,搜索--点击jsp--在相应的字符集设置上设置成自己想要的编码集。

如果这样还是不行的话,说明你数据库字符集设置有问题,这样设置:

首先把MySQL的服务停掉 在运行窗口输入:net stop mysql

把服务器和客户端的字符集改成自己想用的字符集:GB2312

具体 *** 作为:打开mysql安装目录下的myini.tet;

找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在文件最前面输入defaul就会找到,都要改过来;

重启MySQL服务器,在运行窗口输入:net start mysql

最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被创建的时候用的是默认的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了

你如果是想从数据库这里就改变编码方式一定要3步:

1.数据库连接的url一定要这样写?useUnicode=true&characterEncoding=gb2312&autoReconnect=true

这一点你应该是做对的

2.建立数据表时,要这样写(编码方式可以变,type这个是数据库类型)

CREATE

TABLE

tableName

(

...略

)type=myisam,default

character

set

gb2312

3.在mysql的目录下

比如我的目录是:C:\Program

Files\MySQL\MySQL

Server

5.0

这样的

.

在这个目录下有个文件叫

my.ini

打开这个文件.

一般是在

第57行

default-character-set=gb2312

根据你自己的编码

该写gb2312这个字符串

添加中文乱码不是mysql的问题,hibernate和什么数据库都有这个问题,原因是hibernate在存储中文时,中文在内存中的存在方式的高低位和英文不同。所以,在hibernate中,如果向数据库存放数据中含有中文,那么就要使用把中文一参数的形式放入数据库中,hibernate 文档中有如何使用参数的例子。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10006974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存