當前位置:成語大全網 - 書法字典 - url如何編碼和解碼?為什麽編碼?

url如何編碼和解碼?為什麽編碼?

壹般來說,URL只能使用英文字母、阿拉伯數字和壹些標點符號,但不能使用其他單詞和符號,因為網絡標準RFC 1738做出了硬性規定。如果URL中有中文字符,則必須對其進行編碼並使用。但麻煩的是,RFC 1738沒有規定具體的編碼方法,而是讓應用程序(瀏覽器)來決定,這導致“URL編碼”成為壹個混亂的領域。

導致混亂的四種情況:

URL路徑包含中文字符

查詢字符串包含中文字符。

Get方法生成的URL包含中文字符。

Ajax調用的URL包含中文字符(在Ajax調用中,IE始終使用GB2312編碼(操作系統的默認編碼),而Firefox始終使用utf-8編碼。)

綜上所述,此時我們需要壹種編碼方法來向服務器發送請求,而js可以滿足這壹需求。

decodeURI()

decodeURIComponent()

encodeURI()

EncodeURIComponent()(常用編碼器()和編碼器組件()

EncodeURI()是Javascript中真正用於編碼URL的函數。它側重於對整個URL進行編碼,因此除了常見符號外,它對URL中的其他符號具有特殊意義”;/ ?:@ & amp=+$,#“,無編碼。編碼後,它輸出utf-8格式的符號,並在每個字節前添加%。

其對應的解碼函數是decodeURI()

encodeURI()的不同之處在於它用於單獨編碼URL的各個組成部分,而不是整個URL。因此,“;/ ?:@ & amp=+$,#“,這些未在encodeURI()中編碼的符號將全部在encodeURIComponent()中編碼。至於具體的編碼方式,兩者是壹樣的。

其對應的解碼函數是decodeURIComponent()。

encodeURIComponent的編碼範圍大於encodeURI的編碼範圍。

例如,encodeURIComponent會將http://編碼為http%3A%2F%2F,但encodeURI不會。

如果需要對整個URL進行編碼然後使用該URL,則使用encodeURI,否則使用encodeURIComponent。