HttpPost -> Servlet -> MS SQL кодировка кирилицы

Ответить
Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

HttpPost -> Servlet -> MS SQL кодировка кирилицы

Сообщение Vovich » 01 июл 2014, 09:03

Здравствуйте. Помогите разобраться с кодировками. С андроида посредством HttpPost отправляю на сервер (томкат) данные в кирилице,
указываю кодировку:

Код: Выделить всё

httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
на сервере сервлет извлекает данные и инсертует таблицу MS SQL.
В web.xml сервлета прописано:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
Кодовая страница базы SQL 1251. Если инсертировать записи сразу - то в таблице вместо букв вопросики. Если пробую преобразовывать в сервлете из UTF-8 в 1251 типа так:

Код: Выделить всё

String newString = new String(oldString.getBytes("UTF-8"), "Cp1251");
получаю кракозябры в базе.
"windows-1251" тоже пробовал - аналогично.
Подскажите как решить проблему.
Спасибо.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: HttpPost -> Servlet -> MS SQL кодировка кирилицы

Сообщение altwin » 01 июл 2014, 09:13

установить кодировку базы, utf8-general-ci если я не ошибаюсь желательно поставить по умолчанию...
Изображение

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: HttpPost -> Servlet -> MS SQL кодировка кирилицы

Сообщение Vovich » 01 июл 2014, 09:21

В базе так сразу кодировку и не поменяеш. Там и другие таблицы есть, ну и соответственно всякие выборки в программах, сортировка и т.д.
Разве что как последний вариант - создать отдельную базу под эту таблицу, а потом перекачивать данные и на лету конвертировать в 1251.

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

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: HttpPost -> Servlet -> MS SQL кодировка кирилицы

Сообщение Vovich » 01 июл 2014, 14:03

Нашел решение - нужен еще один сервлет-фильтр
http://www.javable.com/docs/articles/cyrlet/

раздел: "Русские буквы в Servlet-ах."
скопировал пример фильтра 1 в 1.
Может кому пригодится.

Ответить