java web 中文亂碼全處理

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

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

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

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

144226587.png

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

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

即表單的數據發送編碼,能夠由程序來控制!!!post

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

(1)若是get請求,請使用以下:htm

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請求,請使用以下:blog

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

五、如此這般,百用百靈!!!
開發

相關文章
相關標籤/搜索