JavaScript编码相关

JavaScript编码相关

1、JS使用的是Unicode字符集,每个字符占用16位。

2、在JS中,每一个字符都等同于一个length为6的Unicode编码串,比如:

‘我’===‘\u6211’。

3、字符的编码形式可以用如下方式得到:

A.    ‘我’.charCodeAt(0).toString(16)==‘6211’

其中charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535之间的整数。

B.    而ASCII字符在0~255之间,故有:

‘A’.charCodeAt(0).toString(16)==‘41’

即:’A’===‘\u0041’

4、关于escape,encodeURI,和encodeURI Component:

A.    相应3个解码函数:unescape,decodeURI,decodeURIComponent

B.    escape ('我')=="%u6211",和charCodeAt是一样的,escape方法把字符转换为JS的Unicode字符序列,数字和字母除外

C.   encodeURI Component('我')===encodeURI('我')== "%E6%88%91",把字符串采用UTF-8编码格式

D.   部分字符不编码:

  escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

  encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

  encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

  encodeURI的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

  如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent()方法分别对各组件进行编码

E.    对于那些会被编码的ASCII字符,三种方法的编码结果是一样的,比如,对空格的编码:

Escape(‘ ’)== encodeURI(‘ ’)== encodeURIComponent(‘ ’)==’%20’

5、关于URL特殊字符的转义:

1. +  URL 中+号表示空格 %2B  

2. 空格 URL中的空格可以用+号或者编码 %20  

3. /  分隔目录和子目录 %2F   

4. ?  分隔实际的 URL 和参数 %3F   

5. % 指定特殊字符 %25   

6. # 表示书签 %23   

7. & URL 中指定的参数间的分隔符 %26   

8. = URL 中指定参数的值 %3D

应用中,修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值