有时候我们在用hibernate插入中文的字符会出现乱码情况,如下图所示。
看到这种情况,第一反应便是应用程序用的字符集合数据库用的字符集不统一了。我的数据库用个是mysql的,看一下建表语句。用的是utf8的字符,没有问题。
CREATE TABLE `Person` ( `pid` ) NOT NULL, `name` ) DEFAULT NULL, `sex` ) DEFAULT NULL, PRIMARY KEY (`pid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
既然数据库的字符集没有问题,那就是程序的问题了。原来我配置文件中的connection.url是这么写的
jdbc:mysql://192.168.92.137:3306/Person
改为下面这样
jdbc:mysql://192.168.92.137:3306/Person?useUnicode=true&characterEncoding=UTF8
然后再执行插入,就没有问题了。