一、遇到的问题
url拼接参数时,参数值带有"+"、"="等特殊字符,没有做特殊处理,导致传递后,获取的参数值不正确。
二、解决方法
调用encodeURIComponent()函数,处理含特殊字符的参数值。
三、encodeURIComponent()、encodeURI()、escape()对比
- encodeURIComponent():针对URL,不处理ASCII字母 数字 ~!*()’,编码范围比encodeURI()大
- encodeURI():针对URL,不处理ASCII字母 数字 ~!@#$&*()=:/,;?+’
- escape():针对字符串,不适用于URL,不处理 ASCII字母 数字 @*/+ 这几个字符
四、特殊字符与编码的对应关系
字符 | 含义 | 编码 |
---|---|---|
+ | 空格 | %2B |
/ | 分隔目录和子目录 | %2F |
空格 | %20 | |
? | 分隔实际的URL和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | 指定的参数间的分隔符 | %26 |
= | 用于指定参数的值 | %3D |