![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
3x3 |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Не трогай базу. Работай в юникоде, как было, а что бы строки в нормальной кодировке были, просто пропиши в начале JSP-страниц:
Или в начале кода, отрабатывающего респонс:
Это всё. Всё остальное - как в начале прописывал, укажи для UTF-8:
-------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||
|
|||||||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
как говорится - БОЛТ
все по прежнему... ![]() |
|||
|
||||
3x3 |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Ну браузер-то шлет.. Иногда в не правильном представлении, отчего, видимо, принципиальные JAVA-программеры и игнорируют такие заголовки. Но опять же есть воркэроунд: Вон что люди советуют, чтобы не зависеть от противного браузера: добавлять в форму поле
И туда браузер (иногда?) при посте складывать данные о кодировке POSTа. Можно использовать для проверки - что там себе пользователь установил, только как потом осуществить указание реквесту его кодировки, ведь она должна быть задана ДО чтения значений формы ![]() Ну и опять же ASP, PHP как-то отрабатывают такую ситуацию без выкрутасов.
Под Tomcat отработало правильно. Может у вас в джава-машине не установлена такая локаль? Я бы начал с того, что попробовал бы поперекодировать строки в/из KOI8-R, если станет генерировать исключения - значит оно.
Struts тут ни при чем. Добавлено @ 11:16
Сейчас читает из базы нормально в UTF-8? В браузер выводит нормально в UTF-8? Заголовки сервер продолжает выдавать про UTF-8? Строку вставили в самое начало JSP? -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||
|
|||||||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Читает НЕ правильно
страничка
заголовки: Response Headers - http://localhost:8080/gg/treeview.jsp Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 2297 Date: Sun, 01 Oct 2006 08:20:32 GMT 200 OK Вывод: Root Õàðüêîââ óë. Êîñìè÷åñêàÿ äîì 12 óë. Ïåòðîâñêîãî óë. Ñóìñêàÿ äîì 42 äîì 43 Êèåâ Ëüâîâ |
|||
|
||||
3x3 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Угу.. Но ведь в самом первом посте вы писали, что с чтением в UTF-8 всё ОК. Что-то изменилось. 1. Для пущей уверенности напишите несколько русских слов прямо на страничку и сохраните её саму в UTF-8. 2. Проверьте параметры подключения к базе 3. Обрамите настройку кодировки запроса как ниже и выводите строку s где-нибудь в тексте странички:
4. Если запрос сначала обрабатывается сервлетом, а потом передаётся страничке, то кодировку запроса нужно настраивать в нём - она должна быть установлена до самого первого обращения к полям запроса. 0. И в любом случае - сперва верните нормальный вывод UTF-8. Возможно строку "<%@ page contentType="text/html; charset=UTF-8" language="java" %>" нужно тоже подвинуть поближе к началу.. -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||
|
|||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
вот такое
блин я ведь писал как все работает.... есть jsp страничка (исходник уже приводил) из которой вызывается метод моего бина (который возвращает форматированные данные) и в этом бине идет подключение к БД параметры подключения url: jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8 table: treet user: root password: 1 Connector-class: org.gjt.mm.mysql.Driver какую еще инфу надо (только не ту что я уже писал ;) ) |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
Попробуй настроить автоматическую перекодировку - перед началом работы с MySQL выполни запрос (В случае клиентской кодировки utf-8)
Подробная информация тут -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
seth |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
сделал так - результат нулевой (т.е. ничего не изменилось ![]() Добавлено @ 12:19 в базе выставлено: Character Set: utf8 Collation: utf8_general_ci Это сообщение отредактировал(а) seth - 1.10.2006, 12:18 |
||||||
|
|||||||
<Spawn> |
|
||||||||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
А клиент в этом случае 1251? Тогда нужно
И мне думается что тут нужен не executeUpdate, а обычный execute(); П.С. У меня есть сервер на MySQL с кодировкой utf8, клиент работает в 1251 - все отлично перекодируется вышеприведенной конструкцией (правда код написан на ПХП, но сути это не меняет) -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||||||||
|
|||||||||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Я приводил выше JSP на который это все выводится - везде прописано UTF-8 при set names cp1251 естественно выводятся вопросики...
|
|||
|
||||
3x3 |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Статический русский текст со странички в кодировке UTF-8 отображается правильно? В этом нужно определиться в первую очередь, что бы отсечь вариант граблей с кодировкой на клиенте. Добавлено @ 13:49
Тогда уж
Но не думается, что в этом дело. Это сообщение отредактировал(а) 3x3 - 1.10.2006, 13:50 -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||
|
|||||||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Уфффф... seth, давай окончательно разберемся с тем, что выдает MySQL в приложение. Если вот такие строки ты видишь в отладчике, то это неправильно: óë. Ïåòðîâñêîãî. Смотри как выглядит процесс. СУБД (пусть будет MySQL) хранит данные в какой-то кодировке (windows-1251, utf8 или еще чем-то). Java работает только с Unicode, то есть для того, чтобы в Java твои строки из БД выглядели правильно надо их перекодировать из кодировки, в которой они хранятся в БД и уникод. То есть если все нормально, должно все корректно перекодироваться и отобразиться в виде русских букв. Давай разберем случаи когда этого может не произойти.
Первый вариант. Строки в базе изначально некоректные. Возможно они нормально отображаются в родных клиентах MySQL, возможно они даже нормально отображаются в клиентах, написанных на PHP, но хранятся некорректно. Вот смотри когда это может произойти. Установили для БД кодировку windows-1251, занесли какие-то данные, сделали дамп базы, потом преобразовали базу в utf8, залили дамп в базу, все русские буквы превратились в умляуты. Но коды этих умляутов соответствуют кодам русских букв, например, в windows-1251. Это я все говорю достаточно абстрактно, может все было и не так. Вообще в большинстве СУБД такой фокус не прокатил бы без видимых последствий, но MySQL есть MySQL. Второй вариант. Драйвер MySQL, который у тебя используется (org.gjt.mm.mysql.Driver), устарел лет надцать назад. Вполне вероятно, что он не поддерживает перекодировку для нужных тебе кодировок. Хотя в принципе в текущих драйверах это синоним актуального драйвера и возможно что более-менее свежий и используется. Теперь о том, что я предлагаю сделать. Возьми свежий драйвер JDBC и напиши махонькое приложение, которое будет выполнять один селект из той таблицы, из которой у тебя и вываливаются все эти кракозябры и запиши их в файл в виндовой кодировке (насколько я понимаю в виндовой консоли ты опять-таки увидишь кракозябры, хотя может и нет, уж не помню). Потом посмотри этот файлик, есди там все в порядке, то причина как минимум не в том, как данные хранятся в базе. Потом попробуй подставить тот драйвер, который ты сейчас используешь. Возможно причина в нем. Ну и если все нормально, то остается разбираться с вебом, хотя тебе здесь столько написали, что не думаю что есть варианты причин, по которых что-то может работать некорректно. Это сообщение отредактировал(а) tux - 1.10.2006, 17:00 |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
У меня первый вариант.... наконецто добрались до истины - спасибо всем
Если что еще не будет получатся я отпишусь ;) |
|||
|
||||
A_titov82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
Здраствуйте. Столкнулся с похожей проблемой. База в utf-8, русский текст нормально сохраняется, если его ввести из клиента mysql. А текст, введённый из веб-приложения, сохраняется в виде кракозябр... Страница тоже в кодировке utf-8. Текст, введённый из mysql-клиента, также нормально показывается на странице. Если программно сохранить текст, забитый прямо в коде, то потом всё корректно отображается. Если перед сохранением вывести сохраняемый текст на консоль, то он уже неправильно отображается. То есть "портиться" он где-то в процессе работы web-приложения (я использую struts). Либо просто неправильно считывается из формы ввода. Куда копать, подскажите...
|
|||
|
||||
A_titov82 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 9.3.2007 Репутация: нет Всего: нет |
проблема была решена при помощи создания фильтра
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |