1

У меня есть приложение Spring Roo с использованием JPA, реализованного через Hibernate. Я не могу использовать кириллические символы, потому что они становятся «????» в БД.JPA (Hibernate) Кириллические символы

1) Прямая вставка кириллических символов в БД в порядке.

2) Если в БД есть какие-либо кириллические символы, они отображаются на веб-странице отлично.

3) У меня есть такая часть конфигурации в web.xml

<filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

.... 

<filter-mapping> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

4) При отладке (до вставки в БД) в IDE кириллических символов отображения ОК, но после вставки, а затем выберите символы ' ????».

5) Я пытался установить 'Accept-Charset = UTF-8' атр для тега 'формы', пытался добавить characterEnc Одинг = UTF-8 в URL DB, попытался установить следующие свойства Hibernate:

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

Что еще может быть неправильно? Почему кириллические символы все еще становятся «????» ?!

p.s. Ubuntu 13,04, MySQL 5.5, Spring 3.2, Spring Roo 1.2.3

UPD: Funally получили решение: я сгенерировал ru_RU и ru_RU.UTF-8 локаль системы и установить локаль ru_RU.UTF-8. Подробные инструкции: here. И я не могу объяснить, почему все работает отлично !.

p.p.s. characterEncoding и useUnicode свойства от '5' не нужны. characterEncoding = параметр UTF-8, который необходимо добавить в строку подключения.

ответ

2

Редактировать MySQL настройки /etc/mysql/my.cnf и силы UTF-8 для выполнения всех соединений:

[client] 
default-character-set = utf8 

[mysqld] 
init-connect='SET NAMES utf8' 
character-set-server = utf8 
collation-server = utf8_general_ci 

[mysql] 
default-character-set = utf8 

рекомендуется обновить базу данных после перенастройки его.

Смежные вопросы