2013-08-10 27 views
16

Ben JPA kullandığım basit bir web uygulaması var.JPA utf-8 karakter kalıcı değil

BlogEntry adlı bir varlığım var.

Yeni bir BlogEntry gönderdiğimde, uygulamada hata ayıkladığımda utf8 karakterleri görüyorum. Bu satırda

em.persist(entity); 

Örneğin

için

, ben mesela hata ayıklamak eğer:

entity.getTitle() 

Ben başarıyla IDE utf-8 karakterleri görebilirsiniz. (Gg gibi veya çç¿)

Ayrıca benim veritabanı UTF8 harmanlamayı vardır ve ben

Ancak JPA, karakterler "INTO ... INSERT" gibi kullanarak sql ile gayet utf-8 karakterleri ekleyebilirsiniz gibi ısrar ediyorlar ????

Bu neden olabilir?

Saygılarımızla.

<?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> 

cevap

37

persistence.xml dosyasının mülkiyet

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

aşağıda, özel karakterler kaçmayı unutmayın: 'spring.datasource.url = jdbc \: mysql \: // localhost \: 3306/blogdatabase \? useUnicode = gerçek \ & characterEncoding = uTF \ -8 \ & characterSetResults = uTF \ -8' – vijay

12

karakter kodlamasını kullanmak Bu güzel münhal o:

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

İşte

benim persistence.xml olduğunu Düzenleme: hazırda bekletme 4.3.1 ile çalışır:

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

Bu Bahar Boot yardımcı oldu:

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