js 字符串編碼與解碼

編碼有三種

1、escape(對應解碼unescape)

定義:escape() 對字符串進行編碼。

注意:

該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ - _ + . / 。其他所有的字符都會被轉義序列替換。

2、encodeURI(對應解碼decodeURI) 

定義:encodeURI() 函數可把字符串作爲 URI 進行編碼。

注意:

該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

該方法的目的是對 URI 進行完整的編碼,因此對以下在 URI 中具有特殊含義的 ASCII 標點符號,encodeURI() 函數是不會進行轉義的:;/?:@&=+$,#

3、encodeURIComponent(對應解碼decodeURIComponent)

定義:encodeURIComponent() 函數可把字符串作爲 URI 組件進行編碼

注意:

該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 這些用於分隔 URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。

綜上

三者共同點:

不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

不同:

unescape :除上述其他全部編碼(現在貌似不提倡使用,最早的,而且不是直接對url轉碼)

encodeURI:URL中(用於分隔組件的)的某些特殊字符不會編碼,其他編碼

encodeURIComponent:URL中(用於分隔組件的)的某些特殊字符編碼,其他也編碼

所以瀏覽器url對地址中的特殊符號是如何處理的,讓我有些費解,因爲分隔組件的特殊字符沒有編碼,但裏面一部分參數中含有的特殊字符卻轉義了(那我拿到url應該以何種方式解碼),求解。

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