URL中文傳輸亂碼解決

2021-10-21 14:39:23 字數 1122 閱讀 3391

網頁url的合法字元分成兩類

url元字元:分號(;),逗號(』,』),斜槓(/),問號(?),冒號(:),at(@),&,等號(=),加號(+),美元符號($),井號(#)

語義字元:a-z,a-z,0-9,連詞號(-),下劃線(_),點(.),感嘆號(!),波浪線(~),星號(*),單引號(),圓括號(()`)

除了以上字元,其他字元出現在url之中都必須轉義,規則是根據作業系統的預設編碼,將每個位元組轉為百分號(%)加上兩個大寫的十六進製制字母。在瀏覽器位址列裡,瀏覽器認為%是個轉義字元,瀏覽器會把%與%之間的編碼,兩位兩位取出後進行解碼,然後再傳遞給後端,然後由後端進行再次解碼。

一般平台字符集編碼方式相同可以使用如下方法編碼傳輸

encodeuri、decodeuri、encodeuricomponent、decodeuricomponent

encodeuri方法的引數是乙個字串,代表整個url。它會將元字元和語義字元之外的字元,都進行轉義。

decodeuri用於還原轉義後的url。它是encodeuri方法的逆運算。

encodeuricomponent只轉除了語義字元之外的字元,元字元也會被轉義。因此,它的引數通常是url的路徑或引數值,而不是整個url

decodeuricomponent用於還原轉義後的url片段。它是encodeuricomponent方法的逆運算。

如果平台編碼方式不同可以使用  ***=encodeuricomponent(base64encode(encodeuricomponent('中文字元內容')))  方式進行傳輸,(此處base64***為自己實現的base64轉碼演算法)

即在先將中文字元轉義後,進行base64操作,然後再次轉義進行傳輸,接收方使用decodeuricomponent(base64decode(decodeuricomponent(***))) 方式解碼,順利解決不同平台導致的亂碼現象。

url 中文傳參 亂碼問題

開發一直用firfox網頁,除錯什麼的都很方便。所以遇到了瀏覽器之間的相容問題。url中文傳參。問題 前台用url傳值中文,後台用request.getparameter接收引數。用firfox,chrome等沒有問題。用ie會出現接參亂碼現象。上網查了一下,算了,還是把原文帖上來吧。比較容易懂。讓...

URL上中文傳參亂碼解決方案

一開始使用encoder string str 進行編碼和decoder string str 進行解碼,結果依然發現頭痛的亂碼。後來再使用encoder string str,utf 8 進行編碼和decoder string str,utf 8 進行解碼。亂碼問題才得以解決。為了測試encode...

URL上中文傳參亂碼解決方案

一開始使用encoder string str 進行編碼和decoder string str 進行解碼,結果依然發現頭痛的亂碼。後來再使用encoder string str,utf 8 進行編碼和decoder string str,utf 8 進行解碼。亂碼問題才得以解決。為了測試encode...