Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > hibernate кодировка


Автор: Samotnik 2.11.2011, 11:19
Привет.
Никак не могу заставить хибер нормально отображать умляуты на сервере, т.е. на локалхосте всё в порядке, а на сервере вместо
Цитата

Spiel-Spaß für Alle

вижу
Цитата

Spiel-Spa� für Alle!

Что сделал:
1. При создании базы указал utf8:
Код

create database name default character set utf8 collate utf8_bin;

2. В hibernate.cfg.xml добавил:
Код

<hibernate.connection.useUnicode>true</hibernate.connection.useUnicode>
<hibernate.connection.characterEncoding>UTF-8</hibernate.connection.characterEncoding>

Добавлеине этих параметров на конец URL также не дали результата.
3. В томкате в файле conf/server.xml добавил URIEncoding="UTF-8" в тег Connector

В чём может быть причина ?  smile 

Автор: Skipy 2.11.2011, 16:48
Localhost и сервер - две физически разные машины? Какая база используется? 

Автор: Samotnik 2.11.2011, 17:27
Цитата(Skipy @  2.11.2011,  16:48 Найти цитируемый пост)
Localhost и сервер - две физически разные машины? 

да. 

Используется MySQL и там и там.
На моём компе(где кодировка хорошая)
Цитата

+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 1.1.8                        |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| version                 | 5.5.14                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86                          |
| version_compile_os      | Win64                        |
+-------------------------+------------------------------+

На сервере(где кодировка поломана)
Цитата

+-------------------------+------------------+
| Variable_name           | Value            |
+-------------------------+------------------+
| protocol_version        | 10               |
| version                 | 5.1.49-3         |
| version_comment         | (Debian)         |
| version_compile_machine | i486             |
| version_compile_os      | debian-linux-gnu |
+-------------------------+------------------+

Автор: Kangaroo 2.11.2011, 21:45
Samotnik, откуда берешь текст? Он изначально в базе данных, или сохраняешь с формы. Попробуй проверить его на всех уровнях - в бд, приложении.

Автор: Samotnik 3.11.2011, 11:14
Помогло добавить в /etc/mysql/my.cnf
Код

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character-set-server = utf8
collation-server = utf8_bin

Есть у кого-нибудь мысли, почему указание кодировки при создании базы не помогало ? 
Цитата(Kangaroo @  2.11.2011,  21:45 Найти цитируемый пост)
откуда берешь текст?

С сайта.

Автор: Skipy 3.11.2011, 11:43
Цитата(Samotnik @ 3.11.2011,  11:14)
Есть у кого-нибудь мысли, почему указание кодировки при создании базы не помогало ? 

У MySQL с кодировками какие-то проблемы бывают. У меня он как-то на любые упоминания character set ругался и отказывался исполнять DDL. При том что по версии он это точно знал. Правда, давно это было, но тем не менее. 

В общем, стоит кодировки указывать на всех возможных уровнях. И одинаковые, лучше UTF-8.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)