response输出的编码

在Servlet的response输出时,若输出的内容是UTF-8编码,则应设置
response.setContentType("text/html;charset=UTF-8");
也就是说必须指定contentType,Web Server才能按正确的编码输出内容。。。

然后再response.getWriter().write(e.getMessage());
但是response.getOutputStream().print依然有乱码,因为outputstream是输出流,并不对编码进行处理。。
而getWriter则有对编码进行再处理。。。

    /* get encoding from Content-Type header */
    String encoding = getCharacterEncoding();
    if (encoding==null && _servletHttpRequest!=null)
    {
        /* implementation of educated defaults */
        String mimeType = _httpResponse.getMimeType();
        encoding = _servletHttpRequest.getServletHandler()
            .getHttpContext().getEncodingByMimeType(mimeType);
    }
    if (encoding==null)
        // get last resort hardcoded default
        encoding = StringUtil.__ISO_8859_1;

 
上面内容是Jetty的getWriter一个实现。。默认下使用的编码是iso-8859-1

转自:http://hi.baidu.com/wadise/blog/item/771fa8ecd1d0112263d09fed.html

 

 

你可能感兴趣的:(html,Web,servlet,Blog)