| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > JDBC кодировка |
| Автор: ins0mnia 17.4.2009, 17:32 | ||||||||||||||||
| Добрый день, всезнающий all У меня возник stupid blocking point при реализации моего веб-приложения с использованием Postgresql 8.3 (running on Windows). Кратко о приложении: чистая JSP&Servlet платформа (даже без базовых taglibs), деплоится на JBoss AS 4.2.2.GA и использует Win PostgreSQL 8.3. Проблема заключается в сохранении в базе данных записей, поступивших из JSP (все JSP pages используют
Скрипты создания БД и таблицы: Database 'test'
Table 'users'
Страница JSP requestsList.jsp (часть кода):
После ввода в поле значени "тест" и нажатия кнопки "Создать" действие передаётся по следующей ссылку
Вот код обработки в сервлете:
Код dbHelper.createEvent(String value):
Вот собственно говоря все детали. Сервер - Windows 2003 Server, Location=Ukraine, lang for the non-Unicode program (Advanced tab in Regional Settings)=Ukrainian (все чекбоксы включены). При просмотре через pgAdmin:
На JSP выводит: òåñò Интересно то, что если я ввожу на другой JSP в поле ввода "тест", а затем ищу это значение в таблице - возвращается одна запись. Большая просьба ткнуть носом в тот момент, где скрывается ошибка. Заранее благодарен |
| Автор: NeoNYura 17.4.2009, 17:39 | ||
| Вы бы распечатали, вашу информацию во всех точках, для того что бы понять где происходит проблема с кодировкой.\ Если в Сервлете то можно добавить следующий код
|
| Автор: goodday1941 17.4.2009, 18:02 | ||||||
что выдает данный системаут
если текст правильный, то база таки у вас не в утф-8 (хотя создается база вроде правильно) Добавлено @ 18:04 это излишество
Добавлено @ 18:06 так не пробвали писать?
|
| Автор: ins0mnia 17.4.2009, 18:14 | ||||||
Изменил код
Вот результат
Также в начале doGet и doPost поставил:
...не помогло |
| Автор: Asal 20.4.2009, 17:51 |
| еще можно попробывать поставить в настройках соединения UTF-8 для результата и данных которые вставляются |
| Автор: ins0mnia 21.4.2009, 11:52 | ||||||
Есть некий прогресс: явно указал метод post для формы и action (на контроллер действий) - в логах jboss и таблице postgresql данные пошли русскими, корректными символами
Также установил, что при отсутствии
символы в jboss log & postgre table будут в некорректной кодировке. В принципе это решение удовлетворяет текущим потребностям, но на будущее хотелось бы разъяснить для себя эту тему. Взглянув на значение keyword в этой uri
, я подумал, что при [code=java]request.getParameter("keyword") в программу данные попадают вот в такой вот, неприемлемой, кодировке. Есть мнение использовать атрибут Connector'a URIEncoding (server.xml JBoss'овского Tomcat'а) This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used. и возможно это позволит решить трабл с обработкой в doGet(). |
| Автор: ins0mnia 21.4.2009, 12:38 | ||||
| Прошу простить за общение с самим собой С doGet решилась проблема использованием того самого атрибута URIEncoding. Теперь мой Connector выглядит так:
URL, в свою очередь, получается таким:
Собственно сабж, мне кажется, можно считать разобранным |
| Автор: ins0mnia 27.4.2009, 09:08 |
| considered as solved |