java web 中文亂碼全處理

1、在javaweb開發中,稍有不慎即會出現中文的亂碼問題,好不頭痛!我們首先分析一下亂碼的機理:

(1)文字在計算機中全部以二進行形式進行存儲,比如:‘a’的存儲形式爲:01100001,常見的字母數字標點符號已由ANSI進行標準化編碼,即基本上不存在不同編碼的問題。

(2)但漢字不同如“愛”在國標碼(GB)下的編碼形式:“1010100010101110”,但在UTF-8下則爲“111001111000100010110001”,這樣如果發送方以一種編碼形式發送,接收方以另一種方式來解釋,就必然會產生亂碼的現象了!

2、瀏覽器中表單中的“中文”是以何種編碼發送呢?,取決於瀏覽器的設置,如下圖:

144226587.png

3、此設置是什麼來決定的呢?,它是由JSP頁面的如下代碼來決定的:

<%@ page contentType="text/html; charset=UTF-8" %>

即表單的數據發送編碼,可以由程序來控制!!!

4、我們控制了發送的編碼,但我們如何能接收時來指定解碼方案呢?這根據get和post請求有兩種不同的方法:

(1)如果get請求,請使用如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uname=request.getParameter("uname");
//用UTF-8指定解碼方案,對接收的uname進行解碼
uname=new String(uname.getBytes("ISO-8859-1"),"UTF-8");
}

(2)如果是post請求,請使用如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//在request接收數據之前,指定其解碼方案
request.setCharacterEncoding("UTF-8");
String uname=request.getParameter("uname");
}

5、如此這般,百用百靈!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章