解決Servlet中文亂碼問題


一、出現亂碼的原因

  由於瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。

二、亂碼的類型以及解決辦法

  1、 response亂碼

一、出現亂碼的原因   

由於瀏覽器默認使用UTF-8碼表進行編碼,而servlet使用ISO-8859-1碼表進行編碼,傳輸和接收方編碼不一致導致亂碼的產生。

二、亂碼的類型以及解決辦法   

1、 response亂碼

response.setHeader("content-type", "text/html;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

第一句目的是為了指定瀏覽器以UTF-8碼表打開服務器發出的數據   

第二句目的是設置response使用的碼表,控制response以UTF-8碼表向瀏覽器寫入數據(必須寫在方法中第一行)   

或者:

OutputStream out=response.getOutputStream();

out.write("<metahttp-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());

通過字節流向瀏覽器寫入meta標簽控制瀏覽器使用的碼表

2、 request亂碼   

request請求分為post和get,分別有不同的方法解決   

①post請求亂碼   

request.setCharacterEncoding("UTF-8");

String username=request.getParameter("username");

username=new String(username.getBytes("iso8859-1"),"UTF-8");

字節流從表單中提取的參數先用iso8859-1解析,再使用UTF-8碼表轉化寫入。   

或:如果是通過超鏈接傳遞參數,超鏈接是get提交,必須手工修改編碼  

3、 瀏覽器顯示亂碼   

第一種:

   response.setContentType("text/html;charset=UTF-8");

  

第二種:   

response.setCharacterEncoding("UTF-8");

response.setHeader("content-type", "text/html;charset=UTF-8");

 


免責聲明!

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



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