解决Hibernate配置utf8却创建latin字符集的表
来源:互联网 发布:linux u盘 删除分区表 编辑:程序博客网 时间:2024/06/01 23:31
原文链接:http://blog.tremend.ro/2007/08/14/how-to-set-the-default-charset-to-utf-8-for-create-table-when-using-hibernate-with-java-persistence-annotations/
问题描述:在hibernate.properties中的url后面已经加了&useUnicode=true&characterEncoding=utf8,但是自动创建的表依然是latin字符集的,且中文插入是乱码。
解决方法:
hibernate.properties 中的dataSource.url后面加上&useUnicode=true&characterEncoding=utf8
注:spring或者hibernate.cfg.xml配置类似,不详细举例
测试发现,此方法程序运行插入数据结果抛出异常,追踪异常发现是乱码的问题,导致sql语句不能执行。
ok,有点思路了,我连接之前的数据库或者导出utf-8的数据库再导入进来,此方法连接没有问题,插入数据也不会乱码,所以猜想是hibernate创建表的时候没有指定utf-8编码。
既然是这样,重写下MySQL5InnoDBDialect然后在配置文件中指定该类呗。
package dialect;import org.hibernate.dialect.MySQL5InnoDBDialect;/** * * Extends MySQL5InnoDBDialect and sets the default charset to be UTF-8 * @author Sorin Postelnicu * @since Aug 13, 2007 */public class CustomMysqlDialect extends MySQL5InnoDBDialect { public String getTableTypeString() { return " ENGINE=InnoDB DEFAULT CHARSET=utf8"; }}
然后修改hibernate.properties中的dataSource.dialect
dataSource.dialect=dialect.CustomMysqlDialect
同样,dataSource.url后面也要加上&useUnicode=true&characterEncoding=utf8
ok,让hibernate重新建个数据库吧,重启下项目。问题解决~
- 解决Hibernate配置utf8却创建latin字符集的表
- 解决:ubuntu16.04下修改mysql字符集为utf8却找不到配置文件的问题
- 一个UTF8字符集相关问题的解决
- ASC码,Latin-1,Utf8,Unicode字符集编码简史
- 解决PLSQL Developer显示UTF8字符集的问题
- Oracle一个UTF8字符集相关问题的解决
- mysql_query设置字符集为utf8,解决中文乱码的问题
- ORACLE11g数据库字符集从ZHS16GBK转为UTF8遗留问题的解决
- 怎样查看配置MySQL的字符集为utf8
- mysql latin to utf8
- mysql latin 转utf8
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- ISO Latin-1字符集
- cocos2dx-3.x: lua 弹出提示框
- AngularJS学习笔记
- 代码托管之github实践
- hdu 4513 吉哥系列故事――完美队形II(Manacher算法求回文串长度)
- Ubuntu 14.04 下 caffe 的安装
- 解决Hibernate配置utf8却创建latin字符集的表
- 商用市场迎来变革 谁能从激烈的竞争中脱颖而出?
- 【软考】---软件测试
- 今天使用Fragment的时候,出现了这个错误 IllegalStateException: Can not perform this action after onSaveInstanceState
- 上班挤公交
- win10兼容问题
- 可变参数
- 生成二维码
- @RequestMapping 用法详解之地址映射