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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка в строке запроса, Jboss+tomcat 
:(
    Опции темы
WatchCat
  Дата 15.12.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот какая-то фигня получается.
Настроил tomcat:
Код

      <Connector port="80" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         useBodyEncodingForURI="true"
         URIEncoding="UTF-8"
      enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>

Закинул в ROOT.war такую тестовую jsp'шку (testenc.jsp, в UTF кодировке)
Код

<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.util.Enumeration"%>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>testenc.jsp page</title></head>
<meta http-equiv="pragma" content="no-cache" />
<!meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<body>
<%=request.getCharacterEncoding()%>
<table>
<%  Enumeration pnms = request.getParameterNames();
    while (pnms.hasMoreElements()) {
        Object o = pnms.nextElement();
        String[] v = request.getParameterValues(o.toString());
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < v.length; i++) sb.append(v[i]).append("|");
%><tr><td><%=o.toString()%></td><td><%=sb.toString()%></td><td><%=request.getParameter(o.toString())%></td></tr><%    }%>
</table>
<a href="testenc.jsp?param=<%=URLEncoder.encode("Русский", "UTF-8")%>">Русский</a><br/>
</body>
</html>


В браузере загружается нормально, по ссылке переходит нормально.
НО! если самому набирать url вида "<host>/testenc.jsp?param=Русский", 
то браузер перекодирует не в виде <host>/testenc.jsp?param=%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9
а в виде <host>/testenc.jsp?param=%D0%F3%F1%F1%EA%E8%E9
т.е. в кодировку 1251(?)
Хотя с тем же wikipedia.org, например, проходит всё нормально, там перекодируется в UTF-8

Вот и возникает вопрос, кде что подкрутить надо? Кто-нибудь знает?

PM MAIL   Вверх
intr
Дата 20.1.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Чтобы из requst`а получать русские значения, необходимо делать 
Код

request.setCharacterEncoding("UTF-8");

в отдельном фильтре перед отрисовкой jsp.

Но для русского языка это вроде работает только для POST (передача данных сабмитом формы) запросов, для GET (если написать в строке запроса <host>/testenc.jsp?param=Русский), неработает. 
 Пример фильтра
Код

package test;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class TestFilter implements Filter {

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        response.setContentType("text/html;charset=UTF-8");
        chain.doFilter(request, response);
    }

    public void init(FilterConfig arg0) throws ServletException {
    }

}


Пример конфига (пишется в web.xml):
Код

    <filter>
        <filter-name>test</filter-name>
        <filter-class>test.TestFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>test</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

--------------------
Исследователь бытия и по совместительству Java-developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0613 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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