![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Использую Hibernate и автоматическое генерирование схемы.
Для "обычных" String в случае MySQL получается примерно такая строка `username` varchar(255) character set latin1 NOT NULL default '' Соответственно при записи кириллицы пишутся всем до боли знакомые знаки вопросов Не пойму откуда берется latin1, и самое главное, где можно задать нужную кодировку (мне надо utf8). |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Из консоли mysql> show create table users.
Подозреваю, что это придумал Hibernate. В принципе даже не суть важно откуда это. Как мне работать с кириллицей? |
|||
|
||||
| Slavca |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 17.2.2005 Где: Новосибирск Репутация: 1 Всего: 5 |
Я не пользовал hibernate, но нельзя ли в пропертях подключения к БД указать кодировку?
В доке по connector'у для MySql написано:
Можно при подключении в url указать: jdbc:mysql://localhost/database_name?characterEncoding=utf8 Поправьте, если не прав. Это сообщение отредактировал(а) Slavca - 3.10.2006, 19:00 |
|||
|
||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Указано давным давно. Даже для таблицы прописал DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Тут дело немного в другом, сами столбцы стоят в latin1. Тут уже кодировка коннекшена не причем. |
|||
|
||||
| 3x3 |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Взял одну из тестовых таблиц и добавил к ней поле в вашей излюбленной кодировке:
Посмотрел чиво получилось:
Получилось что и требовалось: старые столбцы в юникоде, а этот новый - в латинице. Сделал так:
И стали все столбцы в юникоде. Классная штука этот ваш MySQL: заглянешь в мануал - и сразу понятно что следует делать в той или иной ситуации -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||
|
|||||||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Вопрос не в том, как на уже готовой базе поменять кодировку. Спасибо конечно, но это не вызвало затруднений у меня
Но задача заключается в том, чтобы Hibernate _САМА_ создавала схему, указывая MySQL что кодировка таблиц и столбцов utf8, а не latin1 |
|||
|
||||
| Slavca |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 17.2.2005 Где: Новосибирск Репутация: 1 Всего: 5 |
Мануал, как много в этом слове для сердца разработчика...
На вот этой страничке http://dev.mysql.com/doc/refman/4.1/en/create-table.html написано:
Если я опять не угадал, то ты уж приведи кусочки кода. |
|||
|
||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Возник вопрос: а отвечающие вообще когда-нибудь пользовались Hibernate и автоматической генерацией схемы? Зачем отвечать, не зная сути.
Это сообщение отредактировал(а) kkorsakoff - 4.10.2006, 21:33 |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Нашел наконец немного времени попробовать сгенерировать схему из Hibernate в MySQL. Знаешь, похоже не в Hibernate дело. Он вообще не вставляет в сгенерированный скрипт никаких кодировок какие настройки не устанавливай. Думаю, ты уже наверняка проверил кодировку БД. В общем теряюсь в догадках. Может быть при старте MySQL или в my.ini задается latin1 как дефолтная кодировка?
|
|||
|
||||
| sandello |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 18.5.2005 Где: Пермь Репутация: нет Всего: 2 |
По собственному опыту - кодировка в MySQL та еще песня о главном :-)
Когда надоело бодаться установил в настройках сервера кодировку для по умолчанию для сервера, для коннекта, etc: %grep -i utf /etc/my.cnf character-set-server = utf8 default-character-set = utf8 Вроде проблема решилась :-) -------------------- ![]() |
|||
|
||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Это хорошо, но админ не разрешил установить кодировку для сервера
У него на это видимо есть свои админские причины. Да, hibernate ничего не вставляет (смотрел generated sql), но я думал, может есть способ заставить его это сделать. Видимо прийдется при загрузке приложения выполнять alter table .... Все равно спасибо за посильную помощь! |
|||
|
||||
| 3x3 |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
А до этого ты писал:
И ругался на тех, кто не прочел твои мысли правильно:
Это сообщение отредактировал(а) batigoal - 5.10.2006, 15:02 -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||
|
|||||||||
| kkorsakoff |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.10.2005 Где: Санкт-Петербург Репутация: 6 Всего: 14 |
Да, кстати по поводу решения.
Пришлось вручную делать alter table ... DEFAULT CHARSET=utf8 COLLATE=utf8_bin Видимо иначе никак. Ну или как сказал sandello - установить кодировку для сервера целиком. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |