UTF8 - Hibernate / MySQL怪异

时间:2009-11-23 13:15:07

标签: mysql hibernate solaris

我在生产中有一个数据库,我的所有表都使用utf8 / utf8_general_ci编码。除了一种情况外,这基本上工作正常。

会发生什么?某些人物(中文等)被退回;但是,它们也可以通过不同的标准正确地返回同一个表格。

我已经仔细检查了从Hibernate到MySQL的连接参数,并且它们具有良好的字符集集。

我无法理解这是怎么回事。返回错误字符的标准只是一个简单的findById:

Criteria criteria = getHibernateSession().createCriteria(CalendarEvent.class);
criteria.add(Restrictions.eq("id", id));
return (CalendarEvent) criteria.uniqueResult();

这只发生在Solaris上的生产中 - 我无法在本地重现它。

2 个答案:

答案 0 :(得分:3)

在你的连接字符串中你试过

jdbc:mysql://localhost/dbname?characterEncoding=utf8

或在启动应用程序/服务器时添加JVM参数-Dfile.encoding=utf-8

答案 1 :(得分:2)

尝试在hibernate配置文件中设置以下属性:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.charSet">UTF-8</property>