亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決java請求過程中亂碼的問題

發布時間:2020-06-18 11:59:26 來源:億速云 閱讀:180 作者:鴿子 欄目:編程語言

出現的問題:

通過get請求向服務器發送請求時,如果請求參數為中文時,服務器端接受到的參數為亂碼。

亂碼原因分析及解決辦法:

1、關于解碼和編碼

編碼:'中'→1110001

解碼:1110001→'中'

亂碼:編碼和解碼過程中使用了不同的字符集

2、Web應用中字符編碼解碼的問題

(1)請求過程:

<1>GET請求

瀏覽器端是以UTF-8進行編碼,所以在服務器端也應該以UTF-8進行解碼

由于GET請求參數附著在URL地址后面,所以要統一的URL地址的解碼字符集。

解決辦法:

在tomcat配置文件server.xml中找到第一個connector加入如下屬性 URIEncoding=UTF-8

<2>POST請求

在獲取請求參數前執行:request.setCharacterEncoding("UTF-8");

(2)響應過程

(1)指定響應數據的編碼字符集

(2)告訴瀏覽器響應數據應該使用什么字符集進行解碼

<1>Tomcat服務器會自動根據“解碼字符集”設置“編碼字符集”

<2>設置編碼字符集:告訴瀏覽器當前響應數據的內容類型:response.setContentType("text/html;charset=UTF-8");需要注意的是,需要在response.getWriter();之前設置,否則無效。

建議:

所有的過濾器都只對POST請求起作用,在jsp頁面中設置字符編碼方式,都只是對表單提交時的POST請求起作用,對GET請求不能起到設置其字符編碼的作用,

在GET請求中使用的是默認的編碼方式,所以對GET請求,需要在server.xml文件中設置URIEncoding="UTF-8"然后重啟TOMCAT便可以實現解決中文亂碼問題,

但是不建議在href超鏈接請求中傳達中文參數,也不建議在GET請求中傳遞中文參數。

另外對傳遞的部分中文實現傳遞和接收時的統一的編碼方法在傳達參數時使用

"reply.jsp?title="+java.net.URLEncoder.encode(keywords)

然后在接收參數頁面使用keywords=new String(request.getParameter("keywords").getBytes("8859_1"));這種方式雖然暫時解決了中文亂碼問題,

但是在后期的維護和部署到其他的服務器時可以仍會會出現中文亂碼了問題,所以不建議使用。

對于Post請求,只需在Servlet或者jsp中寫入如下代碼就可以把解決從表單中傳入的中文亂碼問題

 request.setCharacterEncoding("utf-8");

了解:

而對于Get請求,因為請求參數會被附加到地址欄的URL之后,所以不能用上面的處理方法。應該這樣:

   String str=request.getQueryString();
   //使用URLDecoder解碼字符串
   String str1=java.net.URLDecoder.decode(str,"utf-8");
   String[] paraStrings=str1.split("&");
    //paraStrings[0]就是第一個參數,依次類推...
   for(String paraString : paraStrings)
   {
         String[] nameValue=paraString.split("=");
         //nameValue[0]就是表單的name,nameValue[1]就是表單name對應的值
   }

還有一種方法就是獲取請求參數之后對請求參數值重新編碼,也就是先將其轉換成字節數組,再將字節數組重新解碼成字符串。

  String str=request.getParameter("name");
  byte[] bytes=str.getBytes("ISO-8859-1");
  String name=new String(bytes,"utf-8");

結論:傳遞中文參數時,最好使用POST請求來提交。不同服務器設置編碼方式可能不同,不同操作系統設置編碼方式也可能不同。

以上就是java中請求亂碼解決方法的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 长沙市| 通州区| 黑河市| 桦南县| 萝北县| 临沂市| 嘉荫县| 西昌市| 佳木斯市| 长岛县| 凤城市| 永川市| 花垣县| 太仆寺旗| 武山县| 周至县| 冀州市| 莱阳市| 曲水县| 安塞县| 大埔区| 山阴县| 温州市| 土默特右旗| 大悟县| 东源县| 南昌县| 安平县| 酒泉市| 汨罗市| 富锦市| 霍城县| 公安县| 托克托县| 囊谦县| 霍山县| 新竹市| 铜山县| 银川市| 左权县|