URL中包括中⽂或等特殊字符的处理⽅法
从页⾯上往后台传递参数的⽅法有很多,有时为了⽅便我们会使⽤通过url来进⾏参数传递,特别是在要进⾏⽂件下载等操作时。
使⽤url进⾏参数传递时,如果参数的值不是ASCII字母或字符时,如果直接将这些字符拼进url中,你会发现在后台获取到的参数和你希望的不⼀样。这是我们就需要使⽤对url进⾏encode了。
需要encode的情况如下:
- 1. 参数中有中⽂字符等⾮ASCII字符
这种情况时,要使⽤js的encodeURI()对参数进⾏编码
- 2. 参数中含有?&等特殊字符
当url参数值中包括特殊字符时,如果你不对这些特殊字符进⾏处理,那边在后台接收到的数据就会出错。
这时再使⽤encodeURI()是⽆效的,因为:url编码处理
1. encodeURI()不会对 ASCII 字母和数字进⾏编码,也不会对这些 ASCII 标点符号进⾏编码: - _ . ! ~ * ’ ( )。
2. encodeURI()的⽬的是对 URI 进⾏完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进⾏转义的:;/?:@&=+$,#
这种情况下的处理⽅法就是将这些特殊字符进⾏转义,将其替换为对应的URL编码。好在js库已经提供了对这些特殊字符处理的⽅法,我们直接调⽤encodeURIComponent()⽅法就⾏了。