国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net URL編碼與解碼

2024-07-10 12:41:37
字體:
來源:轉載
供稿:網友
例如Url參數字符串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么勢必會造成接收Url的服務器解析錯誤,因此必須將引起歧義的&和=符號進行轉義,也就是對其進行編碼。

又如,Url的編碼格式采用的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字符,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支持的字符集不同的情況下,中文可能會造成問題。

Url編碼的原則就是使用安全的字符(沒有特殊用途或者特殊意義的可打印字符)去表示那些不安全的字符。

預備知識:URI是統一資源標識的意思,通常我們所說的Url只是URI的一種。典型Url的格式如上面所示。下面提到的Url編碼,實際上應該指的是URI編碼。

代碼如下:
foo://example.com:8042/over/there?name=ferret#nose

/_/ /______________/ /________//_________/ /__/

scheme authority path query fragment

哪些字符需要編碼

RFC3986文檔規定,Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字符以及所有保留字符。RFC3986文檔對Url的編解碼問題做出了詳細的建議,指出了哪些字符需要被編碼才不會引起Url語義的轉變,以及對為什么這些字符需要編碼做出了相應的解釋。

US-ASCII字符集中沒有對應的可打印字符:Url中只允許使用可打印字符。US-ASCII碼中的10-7F字節全都表示控制字符,這些字符都不能直接出現在Url中。同時,對于80-FF字節(ISO-8859-1),由于已經超出了US-ACII定義的字節范圍,因此也不可以放在Url中。

保留字符:Url可以劃分成若干個組件,協議、主機、路徑等。有一些字符(:/?#[]@)是用作分隔不同組件的。例如:冒號用于分隔協議和主機,/用于分隔主機和路徑,?用于分隔路徑和查詢參數,等等。還有一些字符(!$&'()*+,;=)用于在每個組件中起到分隔作用的,如=用于表示查詢參數中的鍵值對,&符號用于分隔查詢多個鍵值對。當組件中的普通數據包含這些特殊字符時,需要對其進行編碼。

RFC3986中指定了以下字符為保留字符:! * ' ( ) ; : @ & = + $ , / ? # [ ]

不安全字符:還有一些字符,當他們直接放在Url中的時候,可能會引起解析程序的歧義。這些字符被視為不安全字符,原因有很多。

空格:Url在傳輸的過程,或者用戶在排版的過程,或者文本處理程序在處理Url的過程,都有可能引入無關緊要的空格,或者將那些有意義的空格給去掉。
引號以及<>:引號和尖括號通常用于在普通文本中起到分隔Url的作用
#:通常用于表示書簽或者錨點
%:百分號本身用作對不安全字符進行編碼時使用的特殊字符,因此本身需要編碼
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 丰镇市| 兴文县| 花莲市| 祁门县| 长顺县| 曲阜市| 宁津县| 泗水县| 瓮安县| 岳阳县| 鄂伦春自治旗| 淄博市| 固安县| 宝山区| 三门峡市| 新津县| 剑川县| 彰化县| 高要市| 中超| 大城县| 利津县| 萨迦县| 五常市| 栾城县| 湘潭市| 同德县| 盐亭县| 房产| 永泰县| 泗阳县| 克什克腾旗| 徐水县| 哈尔滨市| 葵青区| 巩留县| 武定县| 遵义县| 厦门市| 牡丹江市|