前端url編碼

2021-09-24 02:59:36 字數 931 閱讀 8366

為什麼要編碼:

http協議中引數的傳輸是"key=value"這種簡直對形式的,如果要傳多個引數就需要用「&」符號對鍵值對進行分割如"?name1=value1&name2=value2",這樣在服務端在收到這種字串的時候,會用「&」分割出每乙個引數,然後再用「=」來分割出引數值。

針對「name1=value1&name2=value2」我們來說一下客戶端到服務端的概念上解析過程:

上述字串在計算機中用ascii嗎表示為:

6e616d6531 3d 76616c756531 26 6e616d6532 3d 76616c756532。

6e616d6531:name1

3d:=

76616c756531:value1

26:&

6e616d6532:name2

3d:=

76616c756532:value2

服務端在接收到該資料後就可以遍歷該位元組流,首先乙個位元組乙個位元組的吃,當吃到3d這位元組後,服務端就知道前面吃得位元組表示乙個key,再想後吃,如果遇到26,說明從剛才吃的3d到26子節之間的是上乙個key的value,以此類推就可以解析出客戶端傳過來的引數。

現在有這樣乙個問題,如果我的引數值中就包含=或&這種特殊字元的時候該怎麼辦。

比如說「name1=value1」,其中value1的值是「va&lu=e1」字串,那麼實際在傳輸過程中就會變成這樣「name1=va&lu=e1」。我們的本意是就只有乙個鍵值對,但是服務端會解析成兩個鍵值對,這樣就產生了奇異。

哪些字元需要編碼

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

前端js編碼方式:

URL編碼 解碼

url編碼 通過頁面傳輸資料給伺服器時,如果包含了一些特殊字元是無法傳送的。這時就需要先把要傳送的資料轉換成url編碼格式,再傳送給伺服器。伺服器會自動識別出資料是使用url編碼過的,然後會自動把資料轉換回來 url編碼 解碼的4個方法 encodeurl encodeurlcomponent de...

URL 字元編碼

url 編碼會將字元轉換為可通過網際網路傳輸的格式。web 瀏覽器通過 url 從 web 伺服器請求頁面。url 是網頁的位址,比如 url 只能使用 ascii 字符集來通過網際網路進行傳送。由於 url 常常會包含 ascii 集合之外的字元,url 必須轉換為有效的 ascii 格式。url...

關於URL編碼

1.encodecomponent編碼url,url不能直接使用,需要編碼 var rlt var url var params for var i in params for var i in params console.log rlt 1.url就是 只要上網,就一定會用到.只有字母和數字 0...