一、若是提交方式爲post,想不亂碼,只須要在服務器端設置request對象的編碼便可,客戶端以哪一種編碼提交的,服務器端的request對象就以對應的編碼接收,好比客戶端是以UTF-8編碼提交的,那麼服務器端request對象就以UTF-8編碼接收(request.setCharacterEncoding("UTF-8")) 數組
二、若是提交方式爲get,設置request對象的編碼是無效的,request對象仍是以默認的ISO8859-1編碼接收數據,所以要想不亂碼,只能在接收到數據後再手工轉換,步驟以下: 服務器
1).獲取獲取客戶端提交上來的數據,獲得的是亂碼字符串,data="???è?????" post
String data = request.getParameter("paramName"); 編碼
2).查找ISO8859-1碼錶,獲得客戶機提交的原始數據的字節數組 spa
byte[] source = data.getBytes("ISO8859-1"); 對象
3).經過字節數組以指定的編碼構建字符串,解決亂碼 字符串
data = new String(source, "UTF-8"); get
經過字節數組以指定的編碼構建字符串,這裏指定的編碼是根據客戶端那邊提交數據時使用的字符編碼來定的,若是是GB2312,那麼就設置成data = new String(source, "GB2312"),若是是UTF-8,那麼就設置成data = new String(source, "UTF-8") 字符編碼