2013-08-10 2 views
16

Ich habe eine einfache Web-Anwendung, wo ich JPA verwenden.JPA utf-8 Zeichen nicht persistent

Ich habe eine Entität namens BlogEntry.

Wenn ich einen neuen BlogEntry einreiche, wenn ich meine Anwendung debuggen sehe ich die utf8 Zeichen gut.

Zum Beispiel

em.persist(entity); 

In dieser Zeile, wenn ich zum Beispiel debuggen:

entity.getTitle() 

Ich kann successfuly utf-8-Zeichen in der IDE sehen. (Wie Gg, kWk)

Auch meine Datenbank hat UTF8 Sortierungs und ich kann utf-8-Zeichen einfügen ganz gut mit SQL verwenden wie "INSERT INTO ..."

jedoch mit JPA, die Charaktere werden als ???

Warum könnte das sein?

Grüße.

Hier ist meine persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 
    <persistence-unit name="Persistence"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.tugay.blog.core.model.Blogentry</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/blogdatabase"/> 
      <property name="javax.persistence.jdbc.user" value="root"/> 
      <property name="javax.persistence.jdbc.password" value="aabbccdd"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Antwort

37

die Zeichenkodierung in der Eigenschaft der Datei persistence.xml gelöst schön es diese

<property name="javax.persistence.jdbc.url" 
    value="jdbc:mysql://localhost:3306/blogdatabase?useUnicode=yes&amp;characterEncoding=UTF-8"/> 
+0

erinnern Sonderzeichen zu entkommen, wie unten: 'spring.datasource.url = jdbc \: mysql \: // localhost \: 3306/blogdatabase \? useUnicode = wahr \ & characterEncoding = utf \ -8 \ & characterSetResults = utf \ -8' – vijay

12

verwenden:

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

Bearbeiten: mit Ruhezustand 4.3.1 das funktioniert:

<property name="connection.useUnicode">true</property> 
<property name="connection.characterEncoding">utf-8</property> 
14

Diese im Frühjahr Boot-half:

spring.datasource.url=jdbc:mysql://localhost:3306/securitydb?useUnicode=yes&characterEncoding=UTF-8 
Verwandte Themen