Кодировка ответа в Google App Engine (нельзя изменить кодировку ответа) - PullRequest
1 голос
/ 25 февраля 2012
public class FeedUpdaterServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    PrintWriter out = resp.getWriter();
    req.setCharacterEncoding("utf-8");
    resp.setLocale(Locale.TAIWAN);
    resp.setContentType("text/html; charset=utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.getWriter().println("Hello, world!!@!");
            out.println("我是人");  //some chinese character
    out.println(resp.getCharacterEncoding());
    out.flush();
    out.close();
  }

}

web xml

<locale-encoding-mapping-list>
        <locale-encoding-mapping>
            <locale>zh_TW</locale>
            <encoding>utf-8</encoding>
        </locale-encoding-mapping>
    </locale-encoding-mapping-list>

Вывод: Привет, мир !! @!???ISO-8859-1

Кажется, что кодировка ответа не может быть изменена, что происходит ???

1 Ответ

3 голосов
/ 25 февраля 2012

В документах для ServletResponse.setContentType(..) четко указано, что вызов этого метода не имеет никакого эффекта, если вызывается после вызова метода getWriter().

Это делает трюк:

public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/html; charset=UTF-8");
    PrintWriter out = resp.getWriter();
    out.println("Hello, world!!@!");
    out.println("我是人");  //some chinese character
    out.println(resp.getCharacterEncoding());
    out.flush();
    out.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...