一、在javaweb開發中,稍有不慎即會出現中文的亂碼問題,好不頭痛!咱們首先分析一下亂碼的機理:html
(1)文字在計算機中所有以二進行形式進行存儲,好比:‘a’的存儲形式爲:01100001,常見的字母數字標點符號已由ANSI進行標準化編碼,即基本上不存在不一樣編碼的問題。java
(2)但漢字不一樣如「愛」在國標碼(GB)下的編碼形式:「1010100010101110」,但在UTF-8下則爲「111001111000100010110001」,這樣若是發送方以一種編碼形式發送,接收方以另外一種方式來解釋,就必然會產生亂碼的現象了!web
二、瀏覽器中表單中的「中文」是以何種編碼發送呢?,取決於瀏覽器的設置,以下圖:瀏覽器
三、此設置是什麼來決定的呢?,它是由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"); }
五、如此這般,百用百靈!!!
開發