IE、FireFox、Chrome瀏覽器中關於URL傳參中文亂碼,解決兼容性問題!

 前臺用url傳值中文,後臺用request.getParameter接收參數。在Firefox,Chrome等瀏覽器中沒有問題。但用IE瀏覽器就又會出現參數中文亂碼現象。
        IE、 Firefox、Chrome瀏覽器對URL的處理各不相同,瀏覽器在傳輸URl時得對URL進行編碼,IE默認是以UTF-8來傳輸 的,Firefox肯定不是以UTF-8來編碼,有可能是以ISO-8859-1來編碼的,而Chrome好像是採用的GBK來編碼。
        如果不對中文參數進行處理,那麼中文字符經各個瀏覽器以自己的編碼方式傳輸到服務器後就出現了各種編碼方式,而服務器卻只能以一種編碼方式來對接收到的URL進行解碼。這樣的話和服務器使用的編碼方式一樣的瀏覽器在使用帶中文的URl時不會出現問題,其他的瀏覽器則會出現問題。
 解決方法:
        我們可以在參數傳遞之前,我們自己先進行編碼,在獲取參數時,我們再進行解碼。這樣就可以得到我們想要的中文參數了,而且很好的處理了不同瀏覽器中兼容性問題!

具體實例:
JSP頁:
var newUrl = "checkLogin/lessonClassList?userName=張三";
newUrl = encodeURI(newUrl);//編碼
$("#dg").datagrid("options").url=newUrl;
$("#dg").datagrid("reload");
JAVA後臺:
String 
name = request.getParameter("userName");
String u_name = java.net.URLDecoder.decode(name, "UTF-8");// 解碼
u_name = new String(u_name.getBytes("iso-8859-1"), "utf-8");

這樣我們得到的u_name就是正常的中文參數了,很好的處理了在不同瀏覽器的兼容性!
發佈了25 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章