處理url中文亂碼筆記

處理url中文亂碼問題,導致tomcat編譯url不通過
一定要兩次encodeURI();否則後臺解析還是亂碼
encodeURI(encodeURI(hphm));
URLDecoder.decode(vehGwVideo.getHphm(), “utf-8”)
在AJAX瀏覽器來進行發送數據時,一般它所默認的都是UTF-8的編碼.

使用JQUERY中所提供的方法來做操作

encodeURI

function verify() {
//解決中文亂麻問題的方法1,頁面端發出的數據作一次encodeURI,
服務器段使用進行轉移成UTF-8;
//解決中文亂麻問題的方法2,頁面端發出的數據作兩次encodeURI,
這個做的好處在於,不管瀏覽器用戶在頁面來設置編碼,服務器所採用的編碼來做一次URLencode轉換成UTF-8.
var url = “AJAXServer?name=” + encodeURI(encodeURI($("#userName").val()));
url = convertURL(url);
$.get(url,null,function(data){
$("#result").html(data);
});
}

說明:1 .encodeURL函數主要是來對URI來做轉碼,它默認是採用的UTF-8的編碼.
2. UTF-8編碼的格式:一個漢字來三個字節構成,每一個字節會轉換成16進制的編碼,同時添加上%號.

這裏要做兩次encodeURI的原因以及說明::
具體說明其中具體的原理分析如下,假設頁面端輸入的中文是一個“中”,按照下面步驟進行解碼
1.第一次encodeURI,按照utf-8方式獲取字節數組變成[-28,-72-83],對字節碼數組進行遍歷,把每個字節轉化成對應的16進制數,這樣就變成了[E4,B8,AD],最後變成[%E4,%B8,%AD]

2.第二次encodeURI,把數組最後變成[%25E4,%25B8,%25AD]然後就把處理後的數據[%25E4,%25B8,%25AD]發往服務器端,
當應用服務器調用getParameter方法,getParameter方法會去向應用服務器請求參數
應用服務器最初獲得的就是發送來的[%25E4,%25B8,%25AD],應用服務器會對這個數據進行URLdecode操作,URldecode操作和encodeURL操作是相反的操作,處理結果就是[%E4,%B8,%AD],並把這個值返回給getParameter方法

然後再在服務器端中調用相應的URL轉碼方法或者是函數 就可以把數據還原成最初頁面發送過來的中文“中”了。
感謝原作者,很詳細
https://www.cnblogs.com/jx270/p/4829589.html

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