2013-08-10 9 views
16

Ho una semplice applicazione Web in cui utilizzo JPA.JPA utf-8 caratteri non persistenti

Ho un'entità denominata BlogEntry.

Quando invio un nuovo BlogEntry, quando eseguo il debug dell'applicazione vedo perfettamente i caratteri utf8.

Per esempio

em.persist(entity); 

In questa linea, se metto a punto ad esempio:

entity.getTitle() 

posso con successo vedere caratteri UTF-8 nell'IDE. (Come GG, o cc)

Inoltre, il mio database è UTF8 raccolta e posso inserire caratteri UTF-8 più che bene con SQL utilizzando come "INSERT INTO ..."

Tuttavia, con APP, i personaggi sono persistenti come ????

Perché potrebbe essere?

Saluti.

Ecco il mio 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> 

risposta

37

utilizzare la codifica dei caratteri nella proprietà del file persistence.xml

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

ricordare per sfuggire caratteri speciali, come di seguito: 'spring.datasource.url = jdbc \: mysql \: // localhost \: 3306/blogdatabase \? useUnicode = true \ & characterEncoding = utf \ -8 \ & characterSetResults = utf \ -8' – vijay

12

Ciò ha risolto piacevolmente:

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

Modifica: con ibernazione 4.3.1 funziona così:

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

Ciò ha contribuito in primavera Boot:

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