我在生产中有一个数据库,我的所有表都使用utf8 / utf8_general_ci编码。除了一种情况外,这基本上工作正常。
会发生什么?某些人物(中文等)被退回;但是,它们也可以通过不同的标准正确地返回同一个表格。
我已经仔细检查了从Hibernate到MySQL的连接参数,并且它们具有良好的字符集集。
我无法理解这是怎么回事。返回错误字符的标准只是一个简单的findById:
Criteria criteria = getHibernateSession().createCriteria(CalendarEvent.class);
criteria.add(Restrictions.eq("id", id));
return (CalendarEvent) criteria.uniqueResult();
这只发生在Solaris上的生产中 - 我无法在本地重现它。
答案 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>