除了以上字元,其他字元出現在url之中都必須轉義,規則是根據作業系統的預設編碼,將每個位元組轉為百分號(%)加上兩個大寫的十六進製制字母。比如,utf-8的作業系統上,春節...,漢字「春節」不是url的合法字元,所以被瀏覽器自動轉成%e6%...。
其中,「春」轉成了%e6%98%a5,「節」轉成了%e8%8a%82。這是因為「春」和」節「的utf-8編碼分別是e6 98 a5和e8 8a 82,將每個位元組前面加上百分號,就構成了url編碼。
encodeuri 方法的引數是乙個字串,代表整個url。它會將元字元和語義字元之外的字元,都進行轉義。encodeuricomponent只轉除了語義字元之外的字元,元字元也會被轉義。因此,它的引數通常是url的路徑或引數值,而不是整個url。
decodeuri用於還原轉義後的url。它是encodeuri方法的逆運算。decodeuricomponent用於還原轉義後的url片段。它是encodeuricomponent方法的逆運算。
在瀏覽器位址列裡,瀏覽器認為%是個轉義字元,瀏覽器會把%與%之間的編碼,兩位兩位取出後進行解碼,然後再傳遞給後端,然後由後端進行再次解碼。
如果使用encodeuri()進行了一遍編碼,傳過去後,發現解碼出現問題,需要使用兩次encodeuri方法,例如encodeuri(encodeuri("中文"));第一次是把中文編碼成%xy的格式,第二次是對%xy中的%進行編碼%編碼成%25。
[引用位址](
htmldecode(text)
htmlencode(html)
CodeIgniter檔案上傳類上傳中文名檔案出錯
由於upload.php中的寫檔案是通過copy和move uploaded file來實現的,因此當中文名作為引數傳遞到copy函式中時,需要將gb2312編碼的中文轉換為utf 8編碼形式 config file name iconv utf 8 gb2312 files userfile na...
zuul上傳中文檔案亂碼解決
專案中用到zuul,不起閘道器上傳檔案不會出現中文亂碼,經過閘道器處理後,中文都變成?查了好久的解決方案都是在url加字首 zuul來訪問。這樣確實可以解決問題。但是專案很多定義給客戶端訪問的api都已經成型,讓其他客戶端修改訪問的url是不可能的。閘道器這裡將所有帶 zuul請求的請求都走zuul...
struts檔案上傳中文亂碼的解決
用struts 1.3做檔案上傳 用的是struts自帶的org.apache.struts.upload.formfile實現檔案的上傳 的時候出現亂碼的問題,即提交了包含file型別的input的頁面 頁面的編碼為utf 8 後,在action中取出引數時出了問題,具體的表現是頁面提交的引數中引...