![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Есть jsp и bean (в котором описаны функции для загрузки или записи строки в БД)
БД MySql с cp1251 если на jsp выставлять кодировку utf-8 то с БД читается все нормально если на jsp выставлять кодировку cp1251 то записуется в БД все нормально есть одна страничка на которой совмещены эти функции: соответственно необходимо преобразовывать... Пробовал это: String newString = new String(oldString.getBytes("UTF-8"), "Cp1251"); не хочет... ![]() кто что посоветует?? |
|||
|
||||
Nobody |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 25.8.2003 Где: Россия, Москва Репутация: 1 Всего: 16 |
Посоветую выкинуть 1251 и делать всё в юникоде.
-------------------- |
|||
|
||||
Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: 6 Всего: 12 |
Согласен.Пиши всё в UTF-8. |
|||
|
||||
seth |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
хммм - на UTF-8 ничего не получилось - написал на 1251 (т.к. БД в 1251) |
||||
|
|||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
seth
Что имеется в виду под "ничего не получилось"? где именно сбоит кодировка? |
|||
|
||||
seth |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
|
||||
|
|||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Вот такое дело где-нибудь присутствует:
request.setCharacterEncoding("UTF-8"); ? |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
пробовал - не помогает... ![]() проблема решилась с установкой кодировки в windows-1251 Это сообщение отредактировал(а) seth - 28.9.2006, 23:12 |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
seth, тут похоже вот что происходит. В браузер-серверном взаимодействии есть несколько мест, где программным компонентам требуется знать кодировку. Давай сначала рассмотрим ситуацию с чтением из базы - то, что ты называешь:
Ты говоришь, что база в 1251. Значит, драйвер базы все делает правильно, и база тут вообще ни при чем. То есть дело в том, как происходит конвертация между внутренним представлением символов Java (Unicode) и тем, как они передаются по сети и/или отображаются в браузере. Поэтому давай по порядку. Сначала тебе надо засунуть твой вывод в поток в правильной кодировке. Для этого существует метод response.setCharacterEncoding("UTF-8"). Можно также воспользоваться методом response.setContentType("text/html;charset=UTF-8") - это приведет к такому же эффекту. Но здесь имеются всякие подводные грабли, о которых следует знать. Во-первых, установка кодировки ответа должна быть произведена до первого обращения к response.getWriter(). Это потому что выводной поток создается сразу в той кодировке, которая указана (или дефолтной, 8859-1). Так что если поток уже создан, все последующие попытки установить какую бы то ни было кодировку игнлрируются. У тебя как у разработчика не всегда есть контроль над тем, в какой момент происходит получение Writer'а, поэтому одно из простых решений - это написать фильтр, который будет выставлять нужную кодировку еще до всякой обработки. Правда, это подходит только для ситуаций, когда кодировка одна для всего сайта. Именно поэтому есть смысл прислушаться к мнению товарищей, предлагавших тебе все делать в UTF-8, ибо с ней можно вообще забыть, что есть какая-то проблема кодировок. Более того, с UTF-8 становится возможным выводить на странице смесь на разных языках, и каждый язык будет отображаться корректно. В случае с JSP возникает еще одна проблема: там выражение <%@ page contentType="text/html;charset=UTF-8" %> в том числе сообщает контейнеру о том, в какой кодировке читать исходный JSP файл. Поэтому если выводим в UTF-8, то и JSP файл нужно сохранять в UTF-8, а не то получим вопросики вместо русских букв. Ты говоришь, что при кодировке UTF-8 русские буквы из базы отображаются нормально. Хорошо, давай для начала убедимся, что все присходит так, как мы думаем должно происходит. Например, узнаем, какие заголовки приходят со страницей. Это можно посмотреть, например, в Firefox с устагновленным плагином Web Developer Extension. Еще хорошо было бы узнать, не прописан ли мета-тег <meta http-equiv="Content-Type" content="..."> внутри тега <head> приходящей страницы, и если да, то что там внутри атрибута content. Дальше будем плясать от этого. Добавлено @ 00:40 Пока писал ответ, пришло сообшение о решении проблемы. Я только хочу предупрелить seth, что это не решение, а лишь отсрочка. Потому что где-то что происходит не так, как должно происходить. Например, для меня это означает, что браузер шлет POST-данные в windows-1251 - и скорее всего только потому, что это умолчальная локаль на данном конкретном компьютере. Если попробовать то же самое с машины, где локаль английская, то скорее всего в базу попадут кракозябры. Между тем браузер обязан засылать ввод в той кодировке, в котрой получил страницу. Так что давай все-таки смотреть на заголовки ответа. |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Stampede
Великолепный ответ, аплодирую! ![]()
По этому поводу, tux дал готовый рецепт здесь. |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Спасибо за ответ - к сожалению ничего конкретного добавить не могу - необходимо было перенастраивать систему
![]() ну могу кое что добавить - таблицу в mysqle сделал на utf-8 На страничке такое:
при дебаге в бин приходит такое: Õàðüêîâ т.е. вроде UTF-8 и все правильно - только на страничке отображается точно также (т.е. крокозябры) |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
seth, вот это:
совсем не то, что должно быть, должны быть обычные русские буквы. Как ты выполняешь подключение к MySQL? У тебя в url подключения есть параметры useUnicode и characterEncoding? Строка подключения должны выглядеть примерно так:
|
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Вот это, кстати, выглядит обнадеживающе (я могу даже сказать, что там написано что-то про твой город ![]() И по прежнему нет ответа на жизненно важный вопрос: какие заголовки HTTP приходят со страницей. |
|||
|
||||
seth |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
прописал это в подключении - ничего не изменилось ![]() вотъ бин
строка подключения: jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8 ЗЗЫ про заголовки - сейчас буду смотреть - хотя нужно ли это на данный момент - пока запись в БД мы не обсуждаем... ЗЗЗЫ использую коннектор mysql-connector-java-3.0.11-stable-bin.jar Это сообщение отредактировал(а) seth - 30.9.2006, 19:57 |
||||||
|
|||||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Эти заголовки имелись ввиду?
Response Headers - http://localhost:8080/gg/index.jsp Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 323 Date: Sat, 30 Sep 2006 17:00:19 GMT 200 OK Если нет - то где в этом плагине посмотреть то что надо? |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Да, эти. Теперь убедись, что "Content-Type: text/html;charset=UTF-8" присутствует и на той странице, на которой ты просматриваешь результаты, и на той, откуда засылаешь POST. Если все в порядке, то следующее, на что будем смотреть, это кодировка входящего запроса. Например, на странице JSP можно написать так:
|
|||
|
||||
seth |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Давайте для начала разберемся с выборкой из БД Заголовок jsp на который выводятся данные я уже приводил
бин тоже показывал <%=request.getCharacterEncoding()%> выдает null |
||||||
|
|||||||
3x3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
А как вы передаёте сервлету строку для вставки? В URL?
-------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
использую struts |
|||
|
||||
3x3 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Откуда берётся строка - из браузера? -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||
|
|||||
seth |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
давайте для начала разберемся с выборкой из БД... |
||||||
|
|||||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Да, вот еще какую полезную вещь можно сделать: поменяй в форме method="post" на method="get", и тогда в адресной строке браузера адрес целевой страницы в части после знака вопроса будет содержать закодированную кириллическую строку. Любопытно было бы взглянуть, что она из себя представляет.
А что касается базы, то у меня нет сомнений, что там все кодируется нормально. Судя по симптомам, непонятности у тебя именно в вебном слое. |
|||
|
||||
3x3 |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Она же у вас читается нормально в режиме UTF-8? Или я вас неправильно понял? Добавлено @ 01:10
Он вроде не писал ничего про форму. При таких хидерах как выше и гетом буквы пойдут в форме %uXXXX. Поэтому сначала надо разобраться откуда вообще приходит строка в неправильной кодировке. Это сообщение отредактировал(а) 3x3 - 1.10.2006, 01:11 -------------------- Зачем платить больше, когда можно заплатить дважды? |
||||||||||
|
|||||||||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
А вот в этом я как-раз и не уверен. Должны - да. Но судя по тому, что seth упоминал ранее, есть сильное подозрение, что приходит уже в 1251. Вот цитата: Поэтому я и говорю, хотелось бы увидеть запрос браузера в чистом виде. |
|||
|
||||
3x3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Хм.. Воспроизвел проблему. Именно постом оно и кривляется если кодировку в браузере скидываешь на 1251 принудительно.. Добавлено @ 01:56 еУМЙ РТЙОХДЙФЕМШОП УФБЧЙФШ ОЕРТБЧЙМШОХА ЛПДЙТПЧЛХ, ФП НПЦОП РЕТЕДБФШ УЕТЧЕТХ ОЕРТБЧЙМШОЩЕ ВХЛЧЩ -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Шпион Смит, вас разоблачили ![]() |
|||
|
||||
3x3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
![]() ______ Вобщем воркэраунд для случая seth таков: В самом начале обработки, до любых обращений к свойствам реквеста, приложение должно сообщить реквесту, в какой кодировке он получил запрос для приложения. В случае JSP-шки это означает, что её первая строка должна выглядеть так:
PS Я потрясён этим обстоятельством... Сервер недопонимает в какой кодировке ему пришли данные POSTом. Это сообщение отредактировал(а) 3x3 - 1.10.2006, 03:02 -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Я тоже маленько потрясен. Только не сервером, а браузером. Тем, что он не сообщает, в какой кодировке он шлет данные запроса. А еще JSP. Не знаю, как в других контейнерах, но у меня в Jetty выражение <%@ page contentType="text/html;charset=KOI8-R" %> не приводит к выставлению заголовков ответа HTTP! Вот так вот, век живи - век учись ![]() ЗЫ. Да, и мы еще не знаем, какую роль во всем этом играет Struts, который, как выяснилось, тоже здесь фигурирует ![]() |
|||
|
||||
seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Уххххх - понаписывали
![]() Я ведь чуть позже писал что перевел базу на UTF-8..... и теперь не могу прочитать оттуда - с записью в БД даже не хочу еще разбиратся пока не будет нормально выводится.... поскольку Mysql 5 то судя по всему просто мой коннектор не поддерживает такое различие кодировок - либо надо качать новый коннектор (что проблематично) либо ставить старый mysql с которым все ок.... или мне еще тут чего-нить посоветуют.... |
|||
|
||||
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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |