Web編碼亂碼解決原理方案__編碼

來源:互聯網
上載者:User

編碼
  常見字元編碼:iso-8859-1(不支援中文)、gb2312、gbk、gb18030(系統預設編碼,中國的國標碼)、utf-8(萬國碼,支援全世界的編碼,所以我們使用這個)

1. 響應編碼
  * 當使用response.getWriter()來向用戶端發送字元資料時,如果在之前沒有設定編碼,那麼預設使用iso,因為iso不支援中文,一定亂碼
  * 在使用response.getWriter()之前可以使用response.setCharaceterEncoding()來設定字元流的編碼為gbk或utf-8,當然我們通常會選擇utf-8。這樣使用response.getWriter()發送的字元就是使用utf-8編碼的。但還是會出現亂碼。因為瀏覽器並不知道伺服器發送過來的是什麼編碼的資料。這時瀏覽器會使用gbk來解碼,所以亂碼。
  * 在使用response.getWriter()之前可以使用response.setHeader("Content-type","text/html;charset=utf-8")來設定回應標頭,通知瀏覽器伺服器這邊使用的是utf-8編碼,而且在調用setHeader()後,還會自動執行setCharacterEncding()方法。這樣瀏覽器會使用utf-8解碼,所以就不會亂碼了。
  * setHeader("Content-Type", "text/html;charset=utf-8")的快捷方法是:setContentType("text/html;charset=utf-8)。

 

2. 請求編碼
  * 用戶端發送給伺服器的請求參數是什麼編碼:
    用戶端首先要開啟一個頁面,然後在頁面中提交表單或點擊超連結。在請求這個頁面時,伺服器響應的編碼是什麼,那麼用戶端發送請求時的編碼就是什麼。
  * 伺服器端預設使用什麼編碼來解碼參數:
    伺服器端預設使用ISO-8859-1來解碼。所以這一定會出現亂碼的。因為iso不支援中文。
  * 請求編碼處理分為兩種:GET和POST:GET請求參數不在請求體中,而POST請求參數在請求體中,所以它們的處理方式是不同的。
  * GET請求編碼處理:
    > String username = new String(request.getParameter("iso-8859-1"), "utf-8");
    > 在server.xml中配置URIEncoding=utf-8
  * POST請求編碼處理:
    > String username = new String(request.getParameter("iso-8859-1"), "utf-8");
    > 在擷取參數之前調用request.setCharacterEncoding("utf-8");

 

3. URL編碼
  表單的類型:Content-Type: application/x-www-form-urlencoded,就是把中文轉換成%後面跟隨兩位的16進位。
  為什麼要用它:在用戶端和伺服器之間傳遞中文時需要把它轉換成網路適合的方式。

  * 它不是字元編碼。
  * 它是用來在用戶端與伺服器之間傳遞參數用的一種方式。
  * URL編碼需要先指定一種字元編碼,把字串解碼後,得到byte[],然後把小於0的位元組+256,再轉換成16進位。前面再添加一個%。
  * POST請求預設就使用URL編碼。tomcat會自動使用URL解碼。
  * URL編碼:String username = URLEncoder.encode(username, "utf-8");
  * URL解碼:String username = URLDecoder.decode(username, "utf-8");

  

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.