1. 程式人生 > >Ajax請求中文亂碼解決方案

Ajax請求中文亂碼解決方案

         Ajax請求路徑中如果有中文出現在引數值中時,在IE瀏覽器中(目前我測過IE7、8、9,其它瀏覽器谷歌、火狐、360極速<非兼>沒問題)都出現過亂碼的情況,遇到這種問題那肯定就是編碼的問題,這時我們就必須採用編碼後再傳參了,在後臺接收時就必須進行解碼操作,在js中進行編碼操作有幾個常用的方法escape()、encodeURI()、encodeURIComponent()。

        1.escape():一般是對資料進行編碼,常用在請求介面和接收介面的編碼格式相同的情況下

        2.encodeURI():對URL的整體編碼,但不會對 ":"、"/"、";" 和 "?"字元編碼

,例如:encodeURI("http://www.xxxx.com?city='長沙'")

        3.encodeURIComponent():由於該方法對所有字元都會編碼,所以經常處理對url進行完全編碼的操作,這樣組合url就不會被特殊字元分隔了,例如把某個url當引數進行傳遞時,就可以使用該方法了 →http://www.xxxx.com?urlstr= ' + encodeURIComponent("http://www.yyyy.com") + '

         在這我們就使用encodeURI()方法對url進行編碼操作,使用該方法進行一次編碼,傳到後臺無需解碼,好像也不會出亂碼,但我一般喜歡做兩次編碼encodeURI(encodeURI("http://www.xxxx.com?city='長沙'"

)),因為瀏覽器進行請求傳送時,會自動做一次解碼操作,這樣我們再做一次編碼,就無需管瀏覽器的預設的編碼方式了,傳到後臺再做一次解碼操作就可以了,後臺解碼可以使用(C#) System.Web.HttpUtility.UrlDecode(str,Encoding.GetEncoding("utf-8")) 進行解碼