Servlets response.sendRedirect (String url) не отправляет кодировку, почему? - PullRequest
2 голосов
/ 21 мая 2010

У меня есть какой-то сервлет, который explicity устанавливает кодировку символов и перенаправляет на какой-то сервлет

class Servlet1 extends HttpServle{
   void doGet(..... ){
        // ...
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8"):
        //......
        response.redirect(servlet2);
    }
}

class Servlet2 extends HttpServle{
   void doGet(..... ){
        // ...
        request.getCharacterEncoding();  // prints null ?? why???
        //......

    }
}

Итак, почему кодировка символов не отправляется с запросом?

1 Ответ

2 голосов
/ 21 мая 2010

HttpServletResponse#setCharacterEncoding() устанавливает кодировку для текущего ответа, а не для последующего запроса. Клиент также не несет ответственности за его возврат по последующему запросу. То, чего вы пытаетесь достичь, просто невозможно без взаимодействия с клиентом, что в этом случае не требуется. Чтобы получить то, что вы хотите, клиент должен установить заголовок HTTP Content-Type с самим атрибутом charset. Проверьте это с помощью средства отладки заголовков HTTP, например Firebug , и вы увидите, что он отсутствует в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...