文档章节

hibernate保存数据到mysql时的中文乱码问题

乐在克里特
 乐在克里特
发布于 2017/02/23 14:45
字数 681
阅读 8
收藏 0

因为hibernate底层使用的是jdbc的技术,所以我参考了别人使用jdbc保存数据到mysql里面时解决乱码问题的方法!

首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码。

这里有几种解决办法。

1、在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码。如 create database foo charset utf8;

2、在建表的时候指定字符集编码。如 create table foo (id char(20)) charset utf8; 

3、指定某一列使用的字符集编码。如create table foo (id char(20) charset utf8);

 

如果你有需要的话还可以指定字符排序的规则,也就是指定 collation,如 create database foo charset utf8 collate utf8_general_ci;,同样也可以指定单独的表、列使用的 collation 规则。

然后在使用 jdbc 连接数据库的时候要告知 jdbc 使用什么字符集编码来跟服务器通信。很简单,只需要在 jdbc 指定数据库路径时做一点修改就可以了。比如,jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8。注意如果在 XML 文件里面的话 “&” 要改成 “&amp”。

完整的写法:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8

在hibernate的配置文件里面修改代码如下:

<property name="connection.url">  
   jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8  
</property>

 

如果你使用的是 gbk 编码的话把上面所有提到utf8 的地方改成gbk 应该就可以了,只要服务器和客户端使用的字符集编码统一就可以了。

 

以下这个是使用 mysql的【命令行】来完成插入的。

mysql 命令行客户端默认使用的字符集也是 latin1,如果你通过这个来插入中文的话也会出现乱码的情况。解决的办法是执行语句 set names 'utf8' 来告诉服务器使用 UTF-8 编码来和客户端通信。你也可以使用 set charset 'utf8',它和 set names 区别只在于 collation 上。set names 和 set charset 都相当于执行了三条语句,具体的内容可以去看 mysql 文档 10.4 节。我想这个方法在使用 jdbc 的时候也是可以的,所以如果 jdbc 的指定数据库地址中没有告知使用的字符集编码的话可以通过执行上面的语句来达到相同的效果。

 

http://blog.csdn.net/dyllove98/article/details/8881863

© 著作权归作者所有

共有 人打赏支持
乐在克里特
粉丝 16
博文 268
码字总数 394729
作品 0
杭州
程序员
私信 提问
Data truncation: Data too long for column '****'

今天写代码时发现中文存入mysql乱码了。 我的数据持久化框架用的Hibernate。首先我确认JSP页面传入后台的中文数据没有乱码,因此我确信是中文数据在存储时出了问题。网上查阅资料,许多人说可...

ZhangFinder
2015/08/12
0
0
mysql编码问题求解!!

通过hibernate向数据库中插入中文数据,数据库中显示的是乱码!! mysql,myeclipse的编码都是utf!!用jdbc插入的数据也是乱码。在MySQL Command Line Client直接用insert语句插入中文数据时...

-kevin-
2012/05/10
177
2
hibernate存取中文出现乱码

使用hibernate进行项目开发的时候,中文修改保存出现乱码问题。很多人都是百度一下,然后复制黏贴 数据连接后面那段代码,如下 jdbc:mysql://localhost:3306/tansinglepage 修改为: jdbc:m...

阿山哥258
2015/10/26
0
0
Mysql中文乱码问题完美解决方案

MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建...

猴亮屏
2014/11/25
0
0
mybatis连接mysql数据库插入中文乱码

对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定)。 2. 连接mysql数据库的url编码设置问题。 对于第一个问题,目前个人发现只能通过重新建库解决,建库的时候...

有资本再款
2015/09/09
100
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 世界的源代码

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @小鱼丁 :#今日歌曲推荐# 分享Jason Mraz的单曲《Prettiest Friend (Demo)》: 《Prettiest Friend (Demo)》- Jason Mraz 手机党少年们想听歌...

小小编辑
3分钟前
0
0
java框架学习日志-13(Mybatis基本概念和简单的例子)

在mybatis初次学习Mybatis的时候,遇到了很多问题,虽然阿里云的视频有教学,但是视频教学所使用的软件和我自己使用的软件不用,我自己用的数据库是oracle数据库,开发环境是idea。而且视频中...

白话
今天
4
0
Java基础:String、StringBuffer和StringBuilder的区别

1 String String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。 String类的包含如下定义: /** The value is used for character storage. */private final cha...

watermelon11
今天
3
0
mogodb服务

部署MongoDB 官网: https://www.mongodb.com/download-center/community 创建mongo数据目录 mkdir /data/mongodb 二进制部署 wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x8......

以谁为师
昨天
5
0
大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞。在敦促每位用户尽快升级系统的同时,Debian团队还发布了Debian ...

linux-tao
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部