This version of the page http://jug.org.ua/wiki/pages/viewpage.action?pageId=3071 (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2008-08-25. The original page over time could change.
Кириллица в JSP - Документация - jug.ORG.ua Wiki
  jug.ORG.ua >  Dashboard > Документация > Кириллица в JSP
Кириллица в JSP
  • 24 февраля - 24 марта - Голосовалка: выбираем самые-самые технологии, фреймворки и программные продукты
  • 31 июля - Agile Club
  • 8 августа - ХХIХ летние Олимпийские игры. Торжественная церемония открытия - Beijing 2008
  • 11-12 сентября - Байнет 2.2 - IT-специалисты соберутся в Минске
Log In  

  • View Info
  •  

Added by Nikolay Gorylenko, edited by Nikolay Gorylenko on Oct 23, 2005
Labels: 
(None)

You are viewing an old version (v. 4) of this page.
The latest version is v. 5, last edited on Jan 28, 2006 (view differences | )
<< View previous version | view page history | view next version >>

  • Для JSP может помочь указание в начале JSP-страницы
    <%@page pageEncoding="UTF-8" %>
  • Для сервлетов может помочь следующий костыль
    protected void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
            if ("ISO-8859-1".equalsIgnoreCase(httpServletResponse.getCharacterEncoding()) || httpServletRequest.getCharacterEncoding()==null) {
                // Если данные были/будут в win1251
                // Для запроса 
                httpServletRequest.setCharacterEncoding("windows-1251");
                // Для ответа
                httpServletResponse.setCharacterEncoding("windows-1251");
    
                // А так данные были/будут в UTF-8
                // Для запроса 
                httpServletRequest.setCharacterEncoding("UTF-8");
                // Для ответа
                httpServletResponse.setCharacterEncoding("UTF-8");
    
            }
            super.service(httpServletRequest, httpServletResponse);
        }

Ответ lexius

  1. Согласно спецификации JSP 2.0 наличия contentType в @page недостаточно для
    указания кодиpовки, используемой для полученния паpаметpов запpоса (см. пункт
    JSP.4.3 спецификации)
    Т.е.
    <%@page contentType="text/html;charset=windows-1251"%>

    указывает
    только кодиpовку для JSP-файла и возвpащаемой стpаницы. Для указания кодиpовки
    паpаметpов нужно дополнительно либо использовать код Java:

    <% request.setCharacterEncoding("windows-1251"); %>

    либо JSTL:

    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <fmt:requestEncoding value="windows-1251"/>
  2. Tomcat 5.0 по-умолчанию игноpиpует попытки вызвать
    request.setCharacterEncoding. Чтобы pазpешить это, нужно добавить внутpи
    server.xml в элементы Connector атpибут useBodyEncodingForURI со значением true
    (подpобности в документации к Tomcat). Hапpимеp:
    <Connector port="8000" useBodyEncodingForURI="true"/>

Таким образом, в загловке кодировка должна соответствовать реальной кодировке в которой передаются данные.
И если в томкате выставить необходимый параметр в server.xml (см. выше), то можно обойтись и без URLEncoding.

Site running on a free Atlassian Confluence Open Source Project / Non-profit License granted to Java developers community of KPI ("JUG KPI"),. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.6.0 Build:#913 Sep 27, 2007) - Bug/feature request - Contact Administrators