處理Servlet響應中文亂碼


首先,response返回有兩種,一種是字節流outputstream,一種是字符流printwrite。

申明:這里為了方便起見,所有輸出都統一用UTF-8編碼。

先說字節流,要輸出“中國",給輸出流的必須是轉換為utf-8的“中國”,還要告訴瀏覽器,用utf8來解析數據

 

[html]  view plain copy
  1.        //這句話的意思,是讓瀏覽器用utf8來解析返回的數據  
  2.         response.setHeader("Content-type", "text/html;charset=UTF-8");  
  3.         String data = "中國";  
  4.         OutputStream ps = response.getOutputStream();  
  5.         //這句話的意思,使得放入流的數據是utf8格式  
  6.         ps.write(data.getBytes("UTF-8"));  



 

再說字符流,要輸出中國,需要設置response.setCharacterEncoding("UTF-8");

 

[html]  view plain copy
  1.              //這句話的意思,是讓瀏覽器用utf8來解析返回的數據  
  2. response.setHeader("Content-type", "text/html;charset=UTF-8");  
  3. //這句話的意思,是告訴servlet用UTF-8轉碼,而不是用默認的ISO8859  
  4. response.setCharacterEncoding("UTF-8");  
  5. String data = "中國";  
  6. PrintWriter pw = response.getWriter();  
  7. pw.write(data);  

 

 

 

經驗:

    1,如果中文返回出現??字符,這表明沒有加response.setCharacterEncoding("UTF-8");這句話。

           2,如果返回的中文是“烇湫”這種亂碼,說明瀏覽器的解析問題,應該檢查下是否忘加response.setHeader("Content-type", "text/html;charset=UTF-8");這句話。

 

如果上面都解決不了,請看更詳細的說明

http://blog.csdn.NET/kontrol/article/details/7767983


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM