導致混亂的四種情況:
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。