url出現中文引數亂碼

2022-04-02 09:22:54 字數 1455 閱讀 3425

當在位址列中傳遞引數時,伺服器端獲取的引數值為亂碼。

解決:1、使用js將中文轉為ascii碼

var param = encodeuri("中文引數");

備註:encodeuri該方法的目的是對 uri 進行完整的編碼,因此對以下在 uri 中具有特殊含義的 ascii 標點符號,encodeuri() 函式是不會進行轉義的:;/?:@&=+$,#

**示例:

alert(encodeuri("我是中文"));  

alert(decodeuri(encodeuri("我是中文")));

2、server端接收傳遞過來的引數

string param = request.getparamter("param");

現在的內容param是亂碼。

3、對接收的引數進行轉碼

stringt newparam = new string(param.getbyte("iso-8859-1"),"utf-8");

備註:接收的引數一定要以iso-8859-1獲取位元組,然後根據網頁的編碼格式new乙個新的字串,這裡使用的是utf-8編碼

js中escape,unescape,encodeuri,encodeuricomponent區別:

1.傳遞引數時候使用,encodeuricomponent否則url中很容易被」#」,」?」,」&」等敏感符號隔斷。

2.url跳轉時候使用,編碼用encodeuri,解碼用decodeuri。

3.escape() 只是為0-255以外 ascii字元 做轉換工作,轉換成的 %u**** 這樣的碼,如果要用更多的字元如 utf-8字元庫 就一定要用 encodeuricomponent() 或 encodeuri() 轉換才可以成 %nn%nn 這的碼才可以,其它情況下escape,encodeuri,encodeuricomponent編碼結果相同,所以為了全球的統一化程序,在用 encodeuricomponent() 或 encodeuri() 代替 escape() 使用吧!

什麼是iso?

iso-8859-1編碼是單位元組編碼,向下相容ascii,其編碼範圍是0x00-0xff,0x00-0x7f之間完全和ascii一致,0x80-0x9f之間是控制字元,0xa0-0xff之間是文字元號。

iso-8859-1收錄的字元除ascii收錄的字元外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字元號。歐元符號出現的比較晚,沒有被收錄在iso-8859-1當中。

因為iso-8859-1編碼範圍使用了單位元組內的所有空間,在支援iso-8859-1的系統中傳輸和儲存其他任何編碼的位元組流都不會被拋棄。換言之,把其他任何編碼的位元組流當作iso-8859-1編碼看待都沒有問題。這是個很重要的特性,mysql資料庫預設編碼是latin1就是利用了這個特性。ascii編碼是乙個7位的容器,iso-8859-1編碼是乙個8位的容器。

latin1是iso-8859-1的別名,有些環境下寫作latin-1。

url中傳遞中文引數出現亂碼的問題

專案中所有的編碼設定為utf 8,並使用的比編碼過濾器,但是在url中傳遞中文引數時還是出現亂碼。原因解釋如下 在url裡面的中文不受你上面設定的編碼的限制,它是unicode格式傳輸的,跟伺服器的編碼相關,如果你把伺服器的編碼設定為utf 8。tomcat的中的編碼設定為utf 8 server....

url 傳引數時出現中文亂碼該怎麼解決

一般出現亂碼都是在js裡面跳轉到哪個類 然後得到這個引數的時候中文亂碼,有乙個非常實用的辦法,在js你可以這樣寫 var url url encodeuri url url encodeuri url 最重要的部分,兩次呼叫encodeuri 就是編碼兩次 然後在跳轉到url所在的類,獲取這個引數的...

URL傳遞中文引數亂碼問題

今天使用jquery傳送post請求時,傳遞的引數是中文的,接收是發現引數亂碼了!開始以為是頁面編碼問題,刪除檔案 新建,還有有此問題。後來在除錯中發現頁面獲取引數時正常,就是傳遞後獲取亂碼了,應該就是傳遞出錯了。網上搜了下,解決方法如下 1.頁面傳遞時 js傳遞 進行編碼設定 var userna...