hibernate保存数据到mysql时的中文乱码问题
2017-07-15 10:24
591 查看
因为hibernate底层使用的是jdbc的技术,所以我参考了别人使用jdbc保存数据到mysql里面时解决乱码问题的方法!
首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1。我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码。
这里有几种解决办法。
1、在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码。如
2、在建表的时候指定字符集编码。如
3、指定某一列使用的字符集编码。如
如果你有需要的话还可以指定字符排序的规则,也就是指定 collation,如
然后在使用 jdbc 连接数据库的时候要告知 jdbc 使用什么字符集编码来跟服务器通信。很简单,只需要在 jdbc 指定数据库路径时做一点修改就可以了。比如,
完整的写法:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8
在hibernate的配置文件里面修改代码如下:
如果你使用的是 gbk 编码的话把上面所有提到utf8 的地方改成gbk 应该就可以了,只要服务器和客户端使用的字符集编码统一就可以了。
以下这个是使用 mysql的【命令行】来完成插入的。
mysql 命令行客户端默认使用的字符集也是 latin1,如果你通过这个来插入中文的话也会出现乱码的情况。解决的办法是执行语句
http://blog.csdn.net/dyllove98/article/details/8881863
首先要告诉数据库要插入的字符串的字符集,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 文件里面的话 “&” 要改成 “&”。
完整的写法: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
相关文章推荐
- hibernate保存数据到mysql时的中文乱码问题!
- hibernate保存数据到mysql时的中文乱码问题
- hibernate保存数据到mysql时的中文乱码问题!
- hibernate保存数据到mysql时的中文乱码问题!
- Hibernate保存mysql数据后中文乱码问题
- 解决Hibernate保存数据到mysql时的中文乱码问题
- hibernate+mysql保存中文数据乱码问题
- mac下 解决 Hibernate保存数据到mysql时的中文乱码问题
- activiti数据保存到mysql时中文乱码的问题
- Hibernate连接mysql数据的中文乱码问题
- Hibernate向mysql中保存中文字符出现乱码问题的解决
- 使用MySQL保存中文数据时,经常会遇到乱码问题的解决思路
- Hibernate向mysql中保存中文字符出现乱码问题的解决
- mysql反向生成hbm.xml后,由hibernate向sql写数据中文出现乱码问题
- 关于 Hibernate 存储数据到 MySQL 中文乱码的问题
- Java_JavaEE_SSH_hibernate向mysql插入数据引起中文乱码问题
- 关于命令行中mysql中文乱码以及不能插入中文数据的问题
- Eclipse MySQL Hibernate 中文乱码问题 解决方案 心得
- 如何解决MYSQL数据中文乱码问题
- jsp+mysql+hibernate+spring中文乱码问题