2013-08-10 6 views
16

У меня есть простое веб-приложение, в котором я использую JPA.JPA utf-8 символов не сохраняется

У меня есть объект под названием BlogEntry.

Когда я отправляю новый BlogEntry, когда я отлаживаю свое приложение, я вижу символы utf8 в порядке.

Например

em.persist(entity); 

В этой строке, если я отладки, например:

entity.getTitle() 

Я могу успешно видеть UTF-8 символов в IDE. (Например, Гг или Сс)

Кроме того, моя база данных имеет UTF8 сверку, и я могу вставить UTF-8 символов просто отлично с помощью SQL, как "INSERT INTO ..."

Однако, с JPA, персонажей сохраняются как ????

Почему это может быть?

С уважением.

Вот мой 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> 

ответ

37

использовать кодировку в свойстве persistence.xml файла

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

помнить, чтобы избежать каких-либо специальных символов, как показано ниже: 'spring.datasource.url = JDBC \: MySQL \: // локальный \: 3306/blogdatabase \? useUnicode = истина \ & characterEncoding = UTF \ -8 \ & characterSetResults = UTF \ -8' – vijay

12

Это решало это красиво:

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

Изменить: с спящим 4.3.1 это работает:

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

Это помогло весной Boot:

spring.datasource.url=jdbc:mysql://localhost:3306/securitydb?useUnicode=yes&characterEncoding=UTF-8 
Смежные вопросы