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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Русские буквы в INSERT 
V
    Опции темы
almagnit
Дата 19.5.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Выполняю команду INSERT и если данные для вставки на ангийском, то проблем не возникает,

а если пытаюсь сохранить в БД русскую информацию, то сервер дает ошибку не корректного символа

потому как JAVA преобразовывает русские буквы в

Код

'\xCA\xF0\xE5\xEF\xE8\xEB...'

при установке соединения устанавливаю кодировку cp1251, просмотрел System properties

везде в кодировках указывается cp1251.

Что приводит к вышеописанному результату?
PM MAIL ICQ   Вверх
v2v
Дата 19.5.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а база данных / таблица с какой кодировкой создана?
 

я бы рекомендовал всюду использовать юникод (UTF-8)...


--------------------
PM   Вверх
almagnit
Дата 19.5.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(v2v @  19.5.2008,  13:40 Найти цитируемый пост)
а база данных / таблица с какой кодировкой создана?

Цитата(almagnit @  19.5.2008,  13:30 Найти цитируемый пост)
при установке соединения устанавливаю кодировку cp1251

насколько я знаю Unicode в Java используется по умолчанию, а без изменения умолчаний русские буквы

вообще преобразовываются в "?"(знаки вопроса), с этим я столкнулся на предыдущем шаге,

до того как указал в переменной Properties кодировку cp1251.


PM MAIL ICQ   Вверх
LSD
Дата 19.5.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



1. Какая база, кодировка базы, какой драйвер используется?
2. Как формируется insert, с подстановочными параметрами или без?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
almagnit
Дата 19.5.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LSD @  19.5.2008,  14:41 Найти цитируемый пост)
1. Какая база, кодировка базы, какой драйвер используется?

1. MySQL, cp1251, jConnector.

Цитата(LSD @  19.5.2008,  14:41 Найти цитируемый пост)
2. Как формируется insert, с подстановочными параметрами или без?

2. Без параметров.

ЗЫ:
Повторюсь, при работе с английским текстом все впорядке.
PM MAIL ICQ   Вверх
LSD
Дата 19.5.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Попробуй с подстановочными параметрами.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
almagnit
Дата 19.5.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(LSD @  19.5.2008,  14:59 Найти цитируемый пост)
Попробуй с подстановочными параметрами.

Строка с текстом команды не выполняется SQL сервером, из-за того что Java изменяет русский

текст как в строке запроса браузера.

ЗЫ:
Я не очень силен в SQL, поправьте если я неправильно понял определение "подстановочных параметров".
PM MAIL ICQ   Вверх
v2v
Дата 19.5.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я так понимаю имелось ввиду 
Код

        String sql = "INSERT INTO my_table (col_string) VALUES(?)";
        PreparedStatement pstmt = connection.prepareStatement(sql);
        pstmt.setString(1, "значение 1 на русском языке");



--------------------
PM   Вверх
almagnit
Дата 19.5.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не вижу взаимодействия PreparedStatements и выходной кодировки. Соответственно результат

не изменился

Код

'\xCA\xF0\xE5\xEF\xE8\xEB...'


Еще разобрался что ошибка не в неправильном написании кода, потому как  последняя моя программа 

работавшая без ошибок сейчас отказывается добавлять информацию в БД на русском языке.

Может быть что-то с ПО. Я пользуюсь 

- mysql-5.0.45-win32 (при настройке конфигурации выбираю cp1251);

- mysql-connector-java-5.0.6

- jre1.5.0_15

вот системные параметры JRE:

Код

java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jre6\bin
java.vm.version=11.0-b11
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=RU
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=Service Pack 2
java.vm.specification.name=Java Virtual Machine Specification
user.dir=E:\Проекты\JAVA1\Grafic
java.runtime.version=1.6.0_10-beta-b14
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jre6\lib\endorsed
os.arch=x86
java.io.tmpdir=C:\DOCUME~1\HOME\LOCALS~1\Temp\
line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows XP
sun.jnu.encoding=Cp1251
java.library.path=C:\Program Files\Java\jre6\bin;.;C:\W...
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=5.1
user.home=C:\Documents and Settings\HOME
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=Cp1251
java.specification.version=1.6
user.name=HOME
java.class.path=E:\Проекты\JAVA1\Grafic\bin
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\jre6
java.specification.vendor=Sun Microsystems Inc.
user.language=ru
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_10-beta
java.ext.dirs=C:\Program Files\Java\jre6\lib\ext;C:...
sun.boot.class.path=C:\Program Files\Java\jre6\lib\resour...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m...


Что же так повлияло на работу соединения ?
PM MAIL ICQ   Вверх
almagnit
Дата 19.5.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(v2v @  19.5.2008,  13:40 Найти цитируемый пост)
я бы рекомендовал всюду использовать юникод (UTF-8)...

Да ты был прав. Блин пол дня потратил на отладку этой ерундовины, плюс один - начитался всего чего можно.

Это при обработке полученных данных на русском языке нужно изменять кодировку через new String(data, "cp1251").

А при записи эта кодировка лишняя.

ЗЫ:
Ну надо же было ...  smile 
PM MAIL ICQ   Вверх
LSD
Дата 20.5.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(almagnit @  19.5.2008,  20:17 Найти цитируемый пост)
Не вижу взаимодействия PreparedStatements и выходной кодировки.

А он и не должен, за преобразование данных отвечает драйвер. Раз он этого не сделал, значит неправильные установки соединения/базы.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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