URL中包括中文或&等特殊字符的处理方法

来源:互联网 发布:javascript教程哪个好 编辑:程序博客网 时间:2024/06/06 01:53

从页面上往后台传递参数的方法有很多,有时为了方便我们会使用通过url来进行参数传递,特别是在要进行文件下载等操作时。

使用url进行参数传递时,如果参数的值不是ASCII字母或字符时,如果直接将这些字符拼进url中,你会发现在后台获取到的参数和你希望的不一样。这是我们就需要使用对url进行encode了。

需要encode的情况如下:
- 1. 参数中有中文字符等非ASCII字符
这种情况时,要使用js的encodeURI()对参数进行编码
- 2. 参数中含有?&等特殊字符
当url参数值中包括特殊字符时,如果你不对这些特殊字符进行处理,那边在后台接收到的数据就会出错。
这时再使用encodeURI()是无效的,因为:
1. encodeURI()不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( )。
2. encodeURI()的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

这种情况下的处理方法就是将这些特殊字符进行转义,将其替换为对应的URL编码。好在js库已经提供了对这些特殊字符处理的方法,我们直接调用encodeURIComponent()方法就行了。


0 0