2 Stimmen

UTF8 - Merkwürdigkeiten bei Hibernate/MySQL

Ich habe eine Datenbank in der Produktion, wo alle meine Tabellen sind mit utf8 / utf8_general_ci Codierung. Dies funktioniert grundsätzlich gut, außer in einem Szenario.

Für einige Zeichen (Chinesisch usw.) wird ein ??? zurückgegeben; für dieselbe Tabelle werden sie jedoch auch korrekt zurückgegeben, allerdings über ein anderes Kriterium.

Ich habe die Verbindungsparameter von Hibernate zu MySQL zweimal überprüft und sie haben den richtigen Zeichensatz eingestellt.

Ich kann nicht verstehen, wie so etwas passieren kann. Das Kriterium, das die fehlerhaften Zeichen zurückgibt, ist nur ein einfaches findById:

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

Das Problem tritt nur in der Produktion auf Solaris auf - ich kann es lokal nicht reproduzieren.

3voto

Bozho Punkte 570413

Haben Sie in Ihrem Verbindungsstring versucht

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

oder JVM-Parameter hinzufügen -Dfile.encoding=utf-8 beim Starten Ihrer Anwendung / Ihres Servers

2voto

EJB Punkte 2383

Versuchen Sie, die folgenden Eigenschaften in Ihrer Hibernate-Konfigurationsdatei einzustellen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X