Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сейвить в базу Кириличные данные? 
:(
    Опции темы
schmidt
Дата 10.6.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



Доброго времени суток!

Есть база данних, в которой есть таблица professor, туда мне надо сейвить преподов с кириличной информацией. Когда вставляю запись в базу данних через пхпМайАдмин или через конольку, то все нормально с кодировками, работает то, что при создании базы данных я прописал set charset cp1251. 
Но когда я передаю данних о преподе через веб форму серелету-контроллеру, который потом передает это Хибернейту засейвить, то  получаю ексепшин:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'first_name' at row 1
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3374)


в поле first_name я вводил кирилицей
PM MAIL   Вверх
5ad1sT
Дата 11.6.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Цитата(schmidt @ 10.6.2009,  23:45)
Доброго времени суток!

Есть база данних, в которой есть таблица professor, туда мне надо сейвить преподов с кириличной информацией. Когда вставляю запись в базу данних через пхпМайАдмин или через конольку, то все нормально с кодировками, работает то, что при создании базы данных я прописал set charset cp1251. 
Но когда я передаю данних о преподе через веб форму серелету-контроллеру, который потом передает это Хибернейту засейвить, то  получаю ексепшин:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'first_name' at row 1
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3374)


в поле first_name я вводил кирилицей

Мне кажется что тут проблема не в кодировке.. у тебя поле в базе ограниченного размера по символам, а ты туда заносиш слишком длинное слово/словосочетание..

Это сообщение отредактировал(а) 5ad1sT - 11.6.2009, 00:10
PM MAIL   Вверх
schmidt
Дата 11.6.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



Когда английскими вводишь, То все нормально - сейвит. А поля в базе я всюда ставил на варЧар по 256 символов
PM MAIL   Вверх
Vasay
Дата 11.6.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



schmidt

От cp1251 я бы отказался в пользу UTF-8

Посмотрите тему, может поможет:
http://forum.vingrad.ru/forum/topic-173998...ysql/index.html


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Старовъръ
Дата 13.6.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



schmidt, ты б в дебагере глянул, может в сервлет данные приходят битые.

Это сообщение отредактировал(а) Старовъръ - 13.6.2009, 17:42
PM MAIL WWW   Вверх
ShurikA
Дата 14.6.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



schmidt

По моему дело всё в том что когда сервер получает кирилицу букбы превращаутся в ASCII коды, а они как известно не один знак (пробел это   на пример. Вот и получается у тебя очень длинное поле.
Попробый загнать в базу чтонибудь очень короткое, и посмотри.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Старовъръ
Дата 14.6.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Цитата
а они как известно не один знак
Они, как известно, один байт ;)
В общем нужно ждать топикстартера)
PM MAIL WWW   Вверх
ShurikA
Дата 14.6.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Старовъръ @  14.6.2009,  09:07 Найти цитируемый пост)
Они, как известно, один байт

это латинские буквы один байт smile А кирилица транслируется на пример в 4


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
Старовъръ
Дата 14.6.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Кол-во байт определяет кодировка. Юникод, в котором присутствуют и русские буквы, использует 2 байта для кодирования одного символа, не зависимо от того, английский это символ или китайский. 
ASCII - это не кодировка, это цифровое представление символов. На этой таблице базируется большинство(если не все) кодировки. В табице ASCII есть представление только английского алфавита. Всего там 128 символов.
PM MAIL WWW   Вверх
ShurikA
Дата 14.6.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(Старовъръ @  14.6.2009,  10:23 Найти цитируемый пост)
ASCII - это не кодировка, это цифровое представление символов. На этой таблице базируется большинство(если не все) кодировки. В табице ASCII есть представление только английского алфавита. Всего там 128 символов. 

pрав, извини, сморозил...


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
schmidt
Дата 14.6.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



В сервлет данные приходят корректно: вывожу параметры в файл - все корректно, все правильно. Но, получается, когда сервелт их передает классу ProfessorDAO, который делает сейв в базу, то в базе они отображаются некорректно.
Напишу еще раз последовательность сохранения:
Есть класс Professor - сущность, в которой инкапсулируются данние о профессоре
Есть класс ProfessorDAO - клас, в котором определен метод 
Код

public void saveProfessor(Professor professor){
        hibernateTemplate.save(professor);
    }

Вот сервлет и вызывает этот метод для сейва профессора в базе данных.

Все равно в базе данных при просмотре отображаются знаки вопросов...
PM MAIL   Вверх
ShurikA
Дата 16.6.2009, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: нет
Всего: 3



Цитата(schmidt @  14.6.2009,  15:38 Найти цитируемый пост)
Все равно в базе данных при просмотре отображаются знаки вопросов... 

Вот это как раз наводит на мысль что есть проблемма с кодиривкой. Думаю UTF-8 поможет.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.