JavaScript URL encoding方法

JavaScript支持以下三种URL encoding方法:
  1. escape;
  2. encodeURI;
  3. encodeURIComponent.
下面阐述一下这三者间的不同:
     escape不会改变数字,拉丁字符以及+ - * / . _ @等,所有其他字符都会被转义为%XX形式,XX是原字符的ASCII码。
     对于Unicode字符,escape处理逻辑更为复杂。如果输入是Unicode字符串,那么非ASCII的Unicode字符将会被转移为Unicode字符序列%uXXXX。例如,大写西里尔字符A,escape会转为%u0410。escape对应的解码函数是unescape。
     
     encodeURI和encodeURIComponent
     在escape之外,当今流行的浏览器还支持另外两个URL编码的函数:encodeURI和encodeURIComponent。他们与escape相似,但他们会保持某些escape会转义的字符(譬如. ~ ( )等)不变;encodeURIComponent会将一些字符入(+ - @)进行转义,而其在escape中保持不变。与escape不同的是,对于Unicode输入,encodeURI和encodeURIComponent不会生成%uXXXX的格式,相反,它们会生成%XX%XX或%XX%XX%XX。例如,encodeURI和encodeURIComponent会将大写西里尔字符A转移为%D0%90,欧元符号(€)转为%E2%82%AC。要对encodeURI和encodeURIComponent编码的字符进行解码,分别调用decodeURI和decodeURIComponent即可。
  • 小写ASCII字符(codes 1 thru 127),
下表列出了对于小写ASCII字符 这三个函数编码后的不同结果。
chr escape(chr) encodeURI(chr) encodeURIComponent(chr)

 _          _              _               _
 -          -              -               -
 .          .              .               .
 *          *              *               *
 +          +              +               %2B
 /          /              /               %2F
 @          @              @               %40
 ~          %7E            ~               ~
 !          %21            !               !
 '          %27            '               '
 (          %28            (               (
 )          %29            )               )
 #          %23            #               %23
 $          %24            $               %24
 &          %26            &               %26
 ,          %2C            ,               %2C
 :          %3A            :               %3A
 ;          %3B            ;               %3B
 =          %3D            =               %3D
 ?          %3F            ?               %3F

所有其他的小写ASCII字符都产生相同的结果:
space       %20            %20             %20
 "          %22            %22             %22
 %          %25            %25             %25
 <          %3C            %3C             %3C
 >          %3E            %3E             %3E
 [          %5B            %5B             %5B
 \          %5C            %5C             %5C
 ]          %5D            %5D             %5D
 ^          %5E            %5E             %5E
 {          %7B            %7B             %7B
 |          %7C            %7C             %7C
 }          %7D            %7D             %7D
...         ...            ...             ...


  • 大写ASCII字符 (codes 128 thru 255)
chr    escape(chr)   encodeURI(chr)  encodeURIComponent(chr)
            %A0         %C2%A0          %C2%A0
 ¡          %A1         %C2%A1          %C2%A1
 ¢          %A2         %C2%A2          %C2%A2
 £          %A3         %C2%A3          %C2%A3
 ¤          %A4         %C2%A4          %C2%A4
 ¥          %A5         %C2%A5          %C2%A5
 ¦          %A6         %C2%A6          %C2%A6
 §          %A7         %C2%A7          %C2%A7
 ¨          %A8         %C2%A8          %C2%A8
 ©          %A9         %C2%A9          %C2%A9
 ª          %AA         %C2%AA          %C2%AA
 «          %AB         %C2%AB          %C2%AB
 ¬          %AC         %C2%AC          %C2%AC
soft hyphen %AD         %C2%AD          %C2%AD
 ®          %AE         %C2%AE          %C2%AE
 ¯          %AF         %C2%AF          %C2%AF
 °          %B0         %C2%B0          %C2%B0
 ±          %B1         %C2%B1          %C2%B1
 ²          %B2         %C2%B2          %C2%B2
 ³          %B3         %C2%B3          %C2%B3
 ´          %B4         %C2%B4          %C2%B4
 µ          %B5         %C2%B5          %C2%B5
 ¶          %B6         %C2%B6          %C2%B6
 ·          %B7         %C2%B7          %C2%B7
 ¸          %B8         %C2%B8          %C2%B8
 ¹          %B9         %C2%B9          %C2%B9
 º          %BA         %C2%BA          %C2%BA
 »          %BB         %C2%BB          %C2%BB
 ¼          %BC         %C2%BC          %C2%BC
 ½          %BD         %C2%BD          %C2%BD
 ¾          %BE         %C2%BE          %C2%BE
 ¿          %BF         %C2%BF          %C2%BF
 À          %C0         %C3%80          %C3%80
 Á          %C1         %C3%81          %C3%81
 Â          %C2         %C3%82          %C3%82
 Ã          %C3         %C3%83          %C3%83
 Ä          %C4         %C3%84          %C3%84
 Å          %C5         %C3%85          %C3%85
 Æ          %C6         %C3%86          %C3%86
 Ç          %C7         %C3%87          %C3%87
 È          %C8         %C3%88          %C3%88
 É          %C9         %C3%89          %C3%89
 Ê          %CA         %C3%8A          %C3%8A
 Ë          %CB         %C3%8B          %C3%8B
 Ì          %CC         %C3%8C          %C3%8C
 Í          %CD         %C3%8D          %C3%8D
 Î          %CE         %C3%8E          %C3%8E
 Ï          %CF         %C3%8F          %C3%8F
 Ð          %D0         %C3%90          %C3%90
 Ñ          %D1         %C3%91          %C3%91
 Ò          %D2         %C3%92          %C3%92
 Ó          %D3         %C3%93          %C3%93
 Ô          %D4         %C3%94          %C3%94
 Õ          %D5         %C3%95          %C3%95
 Ö          %D6         %C3%96          %C3%96
 ×          %D7         %C3%97          %C3%97
 Ø          %D8         %C3%98          %C3%98
 Ù          %D9         %C3%99          %C3%99
 Ú          %DA         %C3%9A          %C3%9A
 Û          %DB         %C3%9B          %C3%9B
 Ü          %DC         %C3%9C          %C3%9C
 Ý          %DD         %C3%9D          %C3%9D
 Þ          %DE         %C3%9E          %C3%9E
 ß          %DF         %C3%9F          %C3%9F
 à          %E0         %C3%A0          %C3%A0
 á          %E1         %C3%A1          %C3%A1
 â          %E2         %C3%A2          %C3%A2
 ã          %E3         %C3%A3          %C3%A3
 ä          %E4         %C3%A4          %C3%A4
 å          %E5         %C3%A5          %C3%A5
 æ          %E6         %C3%A6          %C3%A6
 ç          %E7         %C3%A7          %C3%A7
 è          %E8         %C3%A8          %C3%A8
 é          %E9         %C3%A9          %C3%A9
 ê          %EA         %C3%AA          %C3%AA
 ë          %EB         %C3%AB          %C3%AB
 ì          %EC         %C3%AC          %C3%AC
 í          %ED         %C3%AD          %C3%AD
 î          %EE         %C3%AE          %C3%AE
 ï          %EF         %C3%AF          %C3%AF
 ð          %F0         %C3%B0          %C3%B0
 ñ          %F1         %C3%B1          %C3%B1
 ò          %F2         %C3%B2          %C3%B2
 ó          %F3         %C3%B3          %C3%B3
 ô          %F4         %C3%B4          %C3%B4
 õ          %F5         %C3%B5          %C3%B5
 ö          %F6         %C3%B6          %C3%B6
 ÷          %F7         %C3%B7          %C3%B7
 ø          %F8         %C3%B8          %C3%B8
 ù          %F9         %C3%B9          %C3%B9
 ú          %FA         %C3%BA          %C3%BA
 û          %FB         %C3%BB          %C3%BB
 ü          %FC         %C3%BC          %C3%BC
 ý          %FD         %C3%BD          %C3%BD
 þ          %FE         %C3%BE          %C3%BE
 ÿ          %FF         %C3%BF          %C3%BF


  • Unicode字符
chr    escape(chr)   encodeURI(chr)  encodeURIComponent(chr)
 А       %u0410         %D0%90          %D0%90
 Б       %u0411         %D0%91          %D0%91
 В       %u0412         %D0%92          %D0%92
 Г       %u0413         %D0%93          %D0%93
 Д       %u0414         %D0%94          %D0%94
 Е       %u0415         %D0%95          %D0%95
 Ж       %u0416         %D0%96          %D0%96
 З       %u0417         %D0%97          %D0%97
 И       %u0418         %D0%98          %D0%98
 Й       %u0419         %D0%99          %D0%99
 К       %u041A         %D0%9A          %D0%9A
 Л       %u041B         %D0%9B          %D0%9B
 М       %u041C         %D0%9C          %D0%9C
 Н       %u041D         %D0%9D          %D0%9D
 О       %u041E         %D0%9E          %D0%9E
 П       %u041F         %D0%9F          %D0%9F
 Р       %u0420         %D0%A0          %D0%A0
 С       %u0421         %D0%A1          %D0%A1
 Т       %u0422         %D0%A2          %D0%A2
 У       %u0423         %D0%A3          %D0%A3
 Ф       %u0424         %D0%A4          %D0%A4
 Х       %u0425         %D0%A5          %D0%A5
 Ц       %u0426         %D0%A6          %D0%A6
 Ч       %u0427         %D0%A7          %D0%A7
 Ш       %u0428         %D0%A8          %D0%A8
 Щ       %u0429         %D0%A9          %D0%A9
 Ъ       %u042A         %D0%AA          %D0%AA
 Ы       %u042B         %D0%AB          %D0%AB
 Ь       %u042C         %D0%AC          %D0%AC
 Э       %u042D         %D0%AD          %D0%AD
 Ю       %u042E         %D0%AE          %D0%AE
 Я       %u042F         %D0%AF          %D0%AF


注意,对于某些Unicode字符,encodeURI或encodeURIComponent返回%XX%XX%XX而非%XX%xx。例如:
chr    escape(chr)   encodeURI(chr)  encodeURIComponent(chr)
 ≠       %u2260       %E2%89%A0       %E2%89%A0
 ≡       %u2261       %E2%89%A1       %E2%89%A1
 ≢       %u2262       %E2%89%A2       %E2%89%A2
 ≣       %u2263       %E2%89%A3       %E2%89%A3
 ≤       %u2264       %E2%89%A4       %E2%89%A4
 ≥       %u2265       %E2%89%A5       %E2%89%A5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值