前端面試題 - 講一講什麼是URL編碼?

前端面試題 - 講一講什麼是URL編碼?

Url編碼通常也被稱爲百分號編碼(Url Encoding),是因爲它的編碼方式非常簡單,使用%百分號加上兩位的字符——代表一個字節的十六進制形式。 例如a在US-ASCII碼中對應的字節是0x61,那麼Url編碼之後得到的就是%61。Url編碼默認使用的字符集是US-ASCII。

RFC3986文檔規定,Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個符號以及所有保留字符。

保留字符:Url可以劃分成若干個組件,協議、主機、路徑等。有一些字符是用作分隔不同組件的。例如:冒號用於分隔協議和主機,/用於分隔主機和路徑,?用於分隔路徑和查詢參數,等等。

對於Unicode字符,RFC文檔建議使用utf-8對其進行編碼得到相應的字節,然後對每個字節執行百分號編碼。如"中文"使用UTF-8字符集得到的字節爲0xE4 0xB8 0xAD 0xE6 0x96 0x87,經過Url編碼之後得到"%E4%B8%AD%E6%96%87"。

encodeURI() 函數可把字符串作爲 URI 進行編碼。該方法不會對 ASCII 字母和數字進行編碼, 也不會對這些 ASCII 標點符號進行編碼例如 - _ . ! ~ * ' ( ) 。 因爲該方法的目的是對 URI 進行完整的編碼使之成爲一個合格的URI。

encodeURIComponent() 函數可把字符串作爲 URI 組件進行編碼。因此除了與encodeURI()相同的功能外, encodeURIComponent() 函數還必須轉義用於分隔 URI 各個部分的標點符號。

通俗易懂的前端面試題網站: www.front-interview.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章