![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| initmax |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Как задать кодировку после установки соединения с БД
I have the class for connection:
Class for set char set and other query
After connection in start servlet, I set char set my database, executing this method MySQLQueryObj.setEncoding("utf8");
but words in browser printed so "???????????????????..?????????...?????????..." if I connect to MySQL server in console, and execute SET NAMES UTF8; text my tables in console printing correctly... I call in main servlet method
|
||||||||
|
|||||||||
| ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 2 Всего: 28 |
На мой взгляд проблема не в кодировке БД, поскольку судя по всему кодировка мускула устанавливается (иначе был бы эксепшн при выполнении запроса).
Проблема в кодировке ответа сервлета. Кодировка ответа сервлета устанавливается либо setContentType() (эквивалентно заданию text/html;charset=...) либо setLocale() или же через setCharacterEncoding() (но перед вызовом response.getWriter()) В любом случае я бы проверил что выдает response.getCharacterEncoding() - он должен совпадать с кодировкой БД. Ну и последнее установка кодировки собственно БД на лету из сервлета - как то не очень хорошо. Кодировка БД обычно задается при ее создании. -------------------- Aut viam inveniam aut faciam |
|||
|
||||
| initmax |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
На лету, задавать кодировку не верно, согласен, это было в качестве тэста. Верно ли задавать кодировку в момент подключения к БД в методе init ?
out.print("char set == "+request.getCharacterEncoding()); кодировка отображается как UTF8 Когда попытался установить кодировку как MySQLQueryObj.setEncoding("UTF8werwer"); ислючения не последовалось, как ранее вместо русского отображаются ????????????????????? исходя из этоно, мне кажется пробелема в методое установки кодировки
Но что не так? всё же написано корректно.... Добавлено через 1 секунду На лету, задавать кодировку не верно, согласен, это было в качестве тэста. Верно ли задавать кодировку в момент подключения к БД в методе init ?
out.print("char set == "+request.getCharacterEncoding()); кодировка отображается как UTF8 Когда попытался установить кодировку как MySQLQueryObj.setEncoding("UTF8werwer"); ислючения не последовалось, как ранее вместо русского отображаются ????????????????????? исходя из этоно, мне кажется пробелема в методое установки кодировки
Но что не так? всё же написано корректно.... |
||||||||
|
|||||||||
| Bandit |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 27.11.2007 Где: Минск Репутация: нет Всего: нет |
На jsp-ине всё прописано? аля:
в контексте веб контейнера прописано? аля:
|
||||
|
|||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Используйте для кодировки сервлет фильтр, как раз хорошая возможность познакомиться с фальтрами, если конечно еще не знакомы. Суть - мапите все запросы на фильтр, в фильтре выставляете реквесту нужную кодировку.
Если возникнут трудности, пишите. код выложим |
|||
|
||||
| initmax |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Про фильтры только слыхал, просто думал не утягощать программу дополнительными классами, поскольку точно знаю в какой кодировке данные в БД В JSP на который идёт редирект прописан:
на офф сайте SUN посоветовали ещё добавить
но это так же ничего не дало.. У меня подозрение на то что метод установки кодировки в БД не работает корректно MySQLQueryObj.setEncoding("UTF8werwer"); обратите внимание какую я пытаюсь установить кодировку UTF8werwer метод отрабатыват, программа не валится.... с какого боку тулить это, не понял.
З.Ы. кому интересно что говорят по этому поводу живущие в SUN ходи СЮДА Это сообщение отредактировал(а) initmax - 5.11.2009, 20:38 |
||||||||
|
|||||||||
| initmax |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Решил посмотреть какая кодировка устанавливается в БД и написал следующий метод
если данный метод вызываю с main Servlet
возврадается null. У меня вовсе такое впечатление что выполняется только один метод MySQLQueryObj.selectAllField("up_menu",ListPageObj); а все остальные будь то MySQLQueryObj.setEncoding("utf8"); или MySQLQueryObj.getShowVariables(); попросту ингнорируются если вызываю |
||||
|
|||||
| initmax |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Даже при завдомо ложной ошибке в запросе, например так
и при таком вызове в стартовом сервлете
Исключения не происходит, я уже совсем в шоке... |
||||
|
|||||
| initmax |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Установил NetBeans 6.8 если запускаю его от ROOT, шрифты отображаются корректно.
если с правами обычного пользователя вместо русских ??????? ??????? Странные вещи творятся в нашем королевтве... Это сообщение отредактировал(а) initmax - 10.11.2009, 12:41 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |