Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Struts Кодировка из UTF-8 в Сp1251 
:(
    Опции темы
seth
Дата 30.9.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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


Если нет - то где в этом плагине посмотреть то что надо?


--------------------
PM MAIL   Вверх
Stampede
Дата 30.9.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(seth @  30.9.2006,  11:01 Найти цитируемый пост)
Эти заголовки имелись ввиду?


Да, эти. Теперь убедись, что "Content-Type: text/html;charset=UTF-8" присутствует и на той странице, на которой ты просматриваешь результаты, и на той, откуда засылаешь POST. Если все в порядке, то следующее, на что будем смотреть, это кодировка входящего запроса. Например, на странице JSP можно написать так:

Код

<p>Request encoding: <%= request.getCharacterEncoding(); %>
</p>


PM WWW   Вверх
seth
Дата 30.9.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 4.6.2006

Репутация: 1
Всего: 1



Цитата(Stampede @ 30.9.2006,  23:07)
Цитата(seth @  30.9.2006,  11:01 Найти цитируемый пост)
Эти заголовки имелись ввиду?


Да, эти. Теперь убедись, что "Content-Type: text/html;charset=UTF-8" присутствует и на той странице, на которой ты просматриваешь результаты, и на той, откуда засылаешь POST. Если все в порядке, то следующее, на что будем смотреть, это кодировка входящего запроса. Например, на странице JSP можно написать так:

Код

<p>Request encoding: <%= request.getCharacterEncoding(); %>
</p>

Давайте для начала разберемся с выборкой из БД

Заголовок jsp на который выводятся данные я уже приводил
Код


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="html" uri="/tags/struts-html"%>
<%@ taglib prefix="bean" uri="/tags/struts-bean"%>
<html:html locale="true">
<head>
   <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8" />

бин тоже показывал

<%=request.getCharacterEncoding()%>
выдает 
null



--------------------
PM MAIL   Вверх
3x3
Дата 1.10.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



А как вы передаёте сервлету строку для вставки? В URL?


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
seth
Дата 1.10.2006, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 4.6.2006

Репутация: 1
Всего: 1



Цитата(3x3 @ 1.10.2006,  00:27)
А как вы передаёте сервлету строку для вставки? В URL?

использую struts


--------------------
PM MAIL   Вверх
3x3
Дата 1.10.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



Цитата(seth @ 1.10.2006,  00:29)
Цитата(3x3 @ 1.10.2006,  00:27)
А как вы передаёте сервлету строку для вставки? В URL?

использую struts

Откуда берётся строка - из браузера?


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
seth
Дата 1.10.2006, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 4.6.2006

Репутация: 1
Всего: 1



Цитата(3x3 @ 1.10.2006,  00:35)
Цитата(seth @ 1.10.2006,  00:29)
Цитата(3x3 @ 1.10.2006,  00:27)
А как вы передаёте сервлету строку для вставки? В URL?

использую struts

Откуда берётся строка - из браузера?

давайте для начала разберемся с выборкой из БД...


--------------------
PM MAIL   Вверх
Stampede
Дата 1.10.2006, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Да, вот еще какую полезную вещь можно сделать: поменяй в форме method="post" на method="get", и тогда в адресной строке браузера адрес целевой страницы в части после знака вопроса будет содержать закодированную кириллическую строку. Любопытно было бы взглянуть, что она из себя представляет.

А что касается базы, то у меня нет сомнений, что там все кодируется нормально. Судя по симптомам, непонятности у тебя именно в вебном слое.

PM WWW   Вверх
3x3
Дата 1.10.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



Цитата(seth @ 1.10.2006,  00:44)
Цитата(3x3 @ 1.10.2006,  00:35)
Цитата(seth @ 1.10.2006,  00:29)
Цитата(3x3 @ 1.10.2006,  00:27)
А как вы передаёте сервлету строку для вставки? В URL?

использую struts

Откуда берётся строка - из браузера?

давайте для начала разберемся с выборкой из БД...

Она же у вас читается нормально в режиме UTF-8? Или я вас неправильно понял?

Добавлено @ 01:10 
Цитата(Stampede @ 1.10.2006,  01:01)
Да, вот еще какую полезную вещь можно сделать: поменяй в форме method="post" на method="get"

Он вроде не писал ничего про форму. При таких хидерах как выше и гетом буквы пойдут в форме %uXXXX. 
Поэтому сначала надо разобраться откуда вообще приходит строка в неправильной кодировке.


Это сообщение отредактировал(а) 3x3 - 1.10.2006, 01:11


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Stampede
Дата 1.10.2006, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(3x3 @  30.9.2006,  16:02 Найти цитируемый пост)
При таких хидерах как выше и гетом буквы пойдут в форме %uXXXX. 


А вот в этом я как-раз и не уверен. Должны - да. Но судя по тому, что 
seth упоминал ранее, есть сильное подозрение, что приходит уже в 1251. Вот цитата:

Цитата(seth @  28.9.2006,  14:10 Найти цитируемый пост)
Цитата(Maksym @ 28.9.2006,  12:19)
Вот такое дело где-нибудь присутствует:
request.setCharacterEncoding("UTF-8");
?

пробовал - не помогает... smile
проблема решилась с установкой кодировки в windows-1251


Поэтому я и говорю, хотелось бы увидеть запрос браузера в чистом виде.
PM WWW   Вверх
3x3
Дата 1.10.2006, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



Цитата(Stampede @ 1.10.2006,  01:22)
Цитата(3x3 @  30.9.2006,  16:02 Найти цитируемый пост)
При таких хидерах как выше и гетом буквы пойдут в форме %uXXXX. 


А вот в этом я как-раз и не уверен. Должны - да. Но судя по тому, что 
seth упоминал ранее, есть сильное подозрение, что приходит уже в 1251. Вот цитата:

Цитата(seth @  28.9.2006,  14:10 Найти цитируемый пост)
Цитата(Maksym @ 28.9.2006,  12:19)
Вот такое дело где-нибудь присутствует:
request.setCharacterEncoding("UTF-8");
?

пробовал - не помогает... smile
проблема решилась с установкой кодировки в windows-1251


Поэтому я и говорю, хотелось бы увидеть запрос браузера в чистом виде.

Хм.. Воспроизвел проблему. Именно постом оно и кривляется если кодировку в браузере скидываешь на 1251 принудительно..

Добавлено @ 01:56 
еУМЙ РТЙОХДЙФЕМШОП УФБЧЙФШ ОЕРТБЧЙМШОХА ЛПДЙТПЧЛХ, ФП НПЦОП РЕТЕДБФШ УЕТЧЕТХ ОЕРТБЧЙМШОЩЕ ВХЛЧЩ


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Stampede
Дата 1.10.2006, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата
Если принудительно ставить неправильную кодировку, то можно передать серверу неправильные буквы


Шпион Смит, вас разоблачили smile

PM WWW   Вверх
3x3
Дата 1.10.2006, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



smile

______


Вобщем воркэраунд для случая seth таков:
В самом начале обработки, до любых обращений к свойствам реквеста, приложение должно сообщить реквесту, в какой кодировке он получил запрос для приложения. В случае JSP-шки это означает, что её первая строка должна выглядеть так:
Код
<% if(request.getCharacterEncoding() == null) request.setCharacterEncoding("UTF-8"); %>




PS
Я потрясён этим обстоятельством... Сервер недопонимает в какой кодировке ему пришли данные POSTом.


Это сообщение отредактировал(а) 3x3 - 1.10.2006, 03:02


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Stampede
Дата 1.10.2006, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(3x3 @  30.9.2006,  17:57 Найти цитируемый пост)
Я потрясён этим обстоятельством... Сервер недопонимает в какой кодировке ему пришли данные POSTом.


Я тоже маленько потрясен. Только не сервером, а браузером. Тем, что он не сообщает, в какой кодировке он шлет данные запроса. А еще JSP. Не знаю, как в других контейнерах, но у меня в Jetty выражение <%@ page contentType="text/html;charset=KOI8-R" %> не приводит к выставлению заголовков ответа HTTP!

Вот так вот, век живи - век учись smile

ЗЫ. Да, и мы еще не знаем, какую роль во всем этом играет Struts, который, как выяснилось, тоже здесь фигурирует smile

PM WWW   Вверх
seth
Дата 1.10.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 4.6.2006

Репутация: 1
Всего: 1



Уххххх - понаписывали smile
Я ведь чуть позже писал что перевел базу на UTF-8.....
и теперь не могу прочитать оттуда - с записью в БД даже не хочу еще разбиратся пока не будет нормально выводится....
поскольку Mysql 5 то судя по всему просто мой коннектор не поддерживает такое различие кодировок - либо надо качать новый коннектор (что проблематично) либо ставить старый mysql с которым все ок....
или мне еще тут чего-нить посоветуют....


--------------------
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.