Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Русские буквы в INSERT |
Автор: almagnit 19.5.2008, 13:30 | ||
Выполняю команду INSERT и если данные для вставки на ангийском, то проблем не возникает, а если пытаюсь сохранить в БД русскую информацию, то сервер дает ошибку не корректного символа потому как JAVA преобразовывает русские буквы в
при установке соединения устанавливаю кодировку cp1251, просмотрел System properties везде в кодировках указывается cp1251. Что приводит к вышеописанному результату? |
Автор: v2v 19.5.2008, 13:40 |
а база данных / таблица с какой кодировкой создана? я бы рекомендовал всюду использовать юникод (UTF-8)... |
Автор: almagnit 19.5.2008, 13:48 |
насколько я знаю Unicode в Java используется по умолчанию, а без изменения умолчаний русские буквы вообще преобразовываются в "?"(знаки вопроса), с этим я столкнулся на предыдущем шаге, до того как указал в переменной Properties кодировку cp1251. |
Автор: LSD 19.5.2008, 14:41 |
1. Какая база, кодировка базы, какой драйвер используется? 2. Как формируется insert, с подстановочными параметрами или без? |
Автор: almagnit 19.5.2008, 14:49 |
1. MySQL, cp1251, jConnector. 2. Без параметров. ЗЫ: Повторюсь, при работе с английским текстом все впорядке. |
Автор: LSD 19.5.2008, 14:59 |
Попробуй с подстановочными параметрами. |
Автор: almagnit 19.5.2008, 15:14 |
Строка с текстом команды не выполняется SQL сервером, из-за того что Java изменяет русский текст как в строке запроса браузера. ЗЫ: Я не очень силен в SQL, поправьте если я неправильно понял определение "подстановочных параметров". |
Автор: v2v 19.5.2008, 16:11 | ||
я так понимаю имелось ввиду
|
Автор: almagnit 19.5.2008, 19:17 | ||||
Не вижу взаимодействия PreparedStatements и выходной кодировки. Соответственно результат не изменился
Еще разобрался что ошибка не в неправильном написании кода, потому как последняя моя программа работавшая без ошибок сейчас отказывается добавлять информацию в БД на русском языке. Может быть что-то с ПО. Я пользуюсь - mysql-5.0.45-win32 (при настройке конфигурации выбираю cp1251); - mysql-connector-java-5.0.6 - jre1.5.0_15 вот системные параметры JRE:
Что же так повлияло на работу соединения ? |
Автор: almagnit 19.5.2008, 20:42 |
Да ты был прав. Блин пол дня потратил на отладку этой ерундовины, плюс один - начитался всего чего можно. Это при обработке полученных данных на русском языке нужно изменять кодировку через new String(data, "cp1251"). А при записи эта кодировка лишняя. ЗЫ: Ну надо же было ... ![]() |
Автор: LSD 20.5.2008, 15:39 |
А он и не должен, за преобразование данных отвечает драйвер. Раз он этого не сделал, значит неправильные установки соединения/базы. |