2009-11-23 74 views
2

我在生產中有一個db,其中所有的表都使用utf8/utf8_general_ci編碼。這基本上工作正常,除了在一種情況下。UTF8 - 休眠/ MySQL奇怪

會發生什麼事?正在返回一些字符(中國等);但是,它們也可以通過不同的標準正確返回相同的表格。

我已經從Hibernate到MySQL檢查了連接參數,他們有很好的字符集。

我不明白這是怎麼發生的。返回壞字符的標準僅僅是一個簡單的findById:

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

這在生產僅發生在Solaris上 - 我無法在本地重現。

+0

那麼我們仍然有問題。這些都沒有幫助 – wjp 2009-11-26 12:02:21

回答

3

在您的連接字符串你試過

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

或添加JVM參數-Dfile.encoding=utf-8啓動應用/服務器時

+0

是的,我們已經有 – wjp 2009-11-23 13:22:51

+0

檢查我的更新 – Bozho 2009-11-23 13:43:18

+0

感謝Bozho,但我沒有看到VM文件編碼如何影響休眠(我會盡力) – wjp 2009-11-23 13:48:56

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> 
+0

嗯,我們沒有useUnicode之一(我們做的其他人)。我會嘗試。 – wjp 2009-11-23 13:59:30