2009-11-23 5 views
2

У меня есть db в производстве, где все мои таблицы используют кодировку utf8/utf8_general_ci. Это в основном работает отлично, за исключением одного сценария.UTF8 - Hibernate/MySQL weirdness

Что происходит, что ??? возвращаются для некоторых символов (китайский и т. д.); однако они также корректно возвращаются для одной и той же таблицы, но по другим критериям.

Я дважды проверил параметры соединения из Hibernate в MySQL и у них есть хороший набор набора символов.

Я не могу понять, как это может происходить. Критерии, которые возвращают плохие персонажи просто простой findById:

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

Это происходит только в производстве на Solaris - я не могу воспроизвести его на месте.

+0

У нас все еще есть проблема. Ничего из этого не помогло – wjp

ответ

3

В вашей связи струне вы пробовали

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

или добавить параметр JVM -Dfile.encoding=utf-8 при запуске приложения/сервера

+0

Да, у нас уже есть – wjp

+0

проверить мое обновление – Bozho

+0

спасибо Bozho, но я не вижу, как кодирование VM-файла влияет на спящий режим (я попытаюсь) – wjp

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