setLocale(java.util.Locale), setCharacterEncoding(java.lang.String),setContentType(java.lang.String

對於setCharacterEncoding(java.lang.String),這個方法是javax.servlet.ServletRequest和javax.servlet.ServletResponse都有的。
ServletRequest用它來設置對來自客戶端請求的字節流的解碼方式,ServletResponse用它來設置發送給客戶端的字節流的編碼方式。
例如:ServletResponse.setCharacterEncoding("UTF-8");html

對於 setContentType(java.lang.String type)方法則是ServletResponse特有的,一樣能夠設置發送給客戶端的字節流的編碼方式。
和setCharacterEncoding(java.lang.String)的效果是等效的。
例如:ServletResponse.setContentType("text/html;charset=utf-8");
這兩個方法能夠重複設置,已最後一次設置的爲準。
測試代碼以下:java

public void service(ServletRequest req, ServletResponse res) {
        try {
           /* res.setCharacterEncoding("UTF-8");
            res.setContentType("text/html;charset=gbk");
            res.setCharacterEncoding("UTF-8");
            res.setContentType("text/html;charset=gbk");
            res.setCharacterEncoding("UTF-8");
            res.setContentType("text/html;charset=gbk");
            res.setContentType("text/html;charset=utf-8");
            res.setCharacterEncoding("UTF-8");*/
            System.out.println(getClass()+"-service(ServletRequest req, ServletResponse res)");
            System.out.println(req);
            System.out.println(res);
            System.out.println("------------------Writer:--------------");
            PrintWriter out = res.getWriter();
            System.out.println(out);
            out.println("Writer:"+out);
            out.println("req.getCharacterEncoding():"+req.getCharacterEncoding());
            out.println("res.getCharacterEncoding():"+res.getCharacterEncoding());
            out.println("res.getContentType():"+res.getContentType());
            out.println("req.getServletContext().getContextPath():"+req.getServletContext().getContextPath());
            out.println("測試中文的,哈哈!");
           
        } catch (Exception e) {
            System.out.println(e);
        }
    }

  

對於setLocale(java.util.Locale)這個方法,API文檔雖說也能夠設置編碼方式可是經測試發現沒有效果。
之後研究半天無果,留待之後解決。測試

發現對於ServletResponse調用setContentType("text/html;charset=UTF-8");比較合適,由於僅僅調用setCharacterEncoding("UTF-8")不會向客戶端發送Content-Type:text/html;charset=UTF-8的響應消息,從而肯能會致使亂碼。編碼

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息