亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

URL傳遞中文編碼的解決方案

legendmohe / 1596人閱讀

摘要:如果使用進(jìn)行了一遍編碼,傳過(guò)去后,發(fā)現(xiàn)解碼出現(xiàn)問(wèn)題,需要使用兩次方法,例如中文第一次是把中文編碼成的格式,第二次是對(duì)中的進(jìn)行編碼編碼成。

網(wǎng)頁(yè)URL的合法字符分成兩類。

URL元字符:分號(hào)(;),逗號(hào)(’,’),斜杠(/),問(wèn)號(hào)(?),冒號(hào)(:),at(@),&,等號(hào)(=),加號(hào)(+),美元符號(hào)($),井號(hào)(#)

語(yǔ)義字符:a-z,A-Z,0-9,連詞號(hào)(-),下劃線(_),點(diǎn)(.),感嘆號(hào)(!),波浪線(~),星號(hào)(*),單引號(hào)(),圓括號(hào)(()`)

除了以上字符,其他字符出現(xiàn)在URL之中都必須轉(zhuǎn)義,規(guī)則是根據(jù)操作系統(tǒng)的默認(rèn)編碼,將每個(gè)字節(jié)轉(zhuǎn)為百分號(hào)(%)加上兩個(gè)大寫(xiě)的十六進(jìn)制字母。比如,UTF-8的操作系統(tǒng)上,http://www.example.com/q=春節(jié)這個(gè)URL之中,漢字“春節(jié)”不是URL的合法字符,所以被瀏覽器自動(dòng)轉(zhuǎn)成http://www.example.com/q=%E6%98%A5%E8%8A%82

其中,“春”轉(zhuǎn)成了%E6%98%A5,“節(jié)”轉(zhuǎn)成了%E8%8A%82。這是因?yàn)椤按骸焙汀惫?jié)“的UTF-8編碼分別是E6 98 A5E8 8A 82,將每個(gè)字節(jié)前面加上百分號(hào),就構(gòu)成了URL編碼。

encodeURI 方法的參數(shù)是一個(gè)字符串,代表整個(gè)URL。它會(huì)將元字符和語(yǔ)義字符之外的字符,都進(jìn)行轉(zhuǎn)義。encodeURIComponent只轉(zhuǎn)除了語(yǔ)義字符之外的字符,元字符也會(huì)被轉(zhuǎn)義。因此,它的參數(shù)通常是URL的路徑或參數(shù)值,而不是整個(gè)URL。

decodeURI用于還原轉(zhuǎn)義后的URL。它是encodeURI方法的逆運(yùn)算。decodeURIComponent用于還原轉(zhuǎn)義后的URL片段。它是encodeURIComponent方法的逆運(yùn)算。

在瀏覽器地址欄里,瀏覽器認(rèn)為%是個(gè)轉(zhuǎn)義字符,瀏覽器會(huì)把%與%之間的編碼,兩位兩位取出后進(jìn)行解碼,然后再傳遞給后端,然后由后端進(jìn)行再次解碼。

如果使用encodeURI()進(jìn)行了一遍編碼,傳過(guò)去后,發(fā)現(xiàn)解碼出現(xiàn)問(wèn)題,需要使用兩次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文編碼成%xy的格式,第二次是對(duì)%xy中的%進(jìn)行編碼%編碼成%25。

字符 說(shuō)明 轉(zhuǎn)化
+ URL 中+號(hào)表示空格 %2B
空格 URL中的空格可以用+號(hào)或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實(shí)際的URL和參數(shù) %3F
% 指定特殊字符 %25
v# 表示書(shū)簽 %23
& URL 中指定的參數(shù)間的分隔符 %26
= URL 中指定參數(shù)的值 %3D

參考:阮一峰的 《JavaScript參考教程》

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91963.html

相關(guān)文章

  • 深入分析 Java Web 中中文編碼問(wèn)題

    摘要:文章首發(fā)地址深入分析中的中文編碼問(wèn)題背景編碼問(wèn)題一直困擾著程序開(kāi)發(fā)人員,尤其是在中更加明顯,因?yàn)槭强缙脚_(tái)的語(yǔ)言,在不同平臺(tái)的編碼之間的切換較多。 文章首發(fā)地址:深入分析 Java Web 中的中文編碼問(wèn)題 背景: 編碼問(wèn)題一直困擾著程序開(kāi)發(fā)人員,尤其是在 Java 中更加明顯,因?yàn)?Java 是跨平臺(tái)的語(yǔ)言,在不同平臺(tái)的編碼之間的切換較多。接下來(lái)將介紹 Java 編碼問(wèn)題出現(xiàn)的根本原...

    jsyzchen 評(píng)論0 收藏0
  • web開(kāi)發(fā)中URL編碼簡(jiǎn)介

    摘要:大部分需要編碼的原因是由于有特殊字符如等或者參數(shù)是中文形式。不會(huì)被此方法編碼的字符重點(diǎn)因此,對(duì)于中文字符串來(lái)說(shuō),如果不希望把字符串編碼格式轉(zhuǎn)化成格式的比如原頁(yè)面和目標(biāo)頁(yè)面的是一致的時(shí)候,只需要使用。 一、為什么要 urlencode()? 因?yàn)楫?dāng)字符串?dāng)?shù)據(jù)以u(píng)rl的形式傳遞給web服務(wù)器時(shí),字符串中是不允許出現(xiàn)空格和特殊字符的。 也就是說(shuō),url的參數(shù)傳遞的時(shí)候,需要遵循一定的url...

    forsigner 評(píng)論0 收藏0
  • web開(kāi)發(fā)中URL編碼簡(jiǎn)介

    摘要:大部分需要編碼的原因是由于有特殊字符如等或者參數(shù)是中文形式。不會(huì)被此方法編碼的字符重點(diǎn)因此,對(duì)于中文字符串來(lái)說(shuō),如果不希望把字符串編碼格式轉(zhuǎn)化成格式的比如原頁(yè)面和目標(biāo)頁(yè)面的是一致的時(shí)候,只需要使用。 一、為什么要 urlencode()? 因?yàn)楫?dāng)字符串?dāng)?shù)據(jù)以u(píng)rl的形式傳遞給web服務(wù)器時(shí),字符串中是不允許出現(xiàn)空格和特殊字符的。 也就是說(shuō),url的參數(shù)傳遞的時(shí)候,需要遵循一定的url...

    xiao7cn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

legendmohe

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<