encodeURIComponent或者encodeURI 不用行不行?

测试

1. 客户端:qq浏览器、firfox、chrome

2. 测试用例

    (1) url中path带汉字

    (2)url中query带汉字

    (3)页面中get请求或者post请求

    (4)页面中meta元数据 charset="utf-8" 或者 charset="gb2312"

调研结果(ps: 比较片面,受浏览器种类和版本影响,结果可能不同,结果不代表绝对性,只是利用有效条件)

qq浏览器行为和chrome行为一致,会对中文进行编码,firfox不会

encodeURI和encodeURIComponent的重要性

因为各个浏览器的行为不一致,所以给开发人员带来困惑,需要一种通用的方法来避免掉多种适配的麻烦。所以encdoeURI和encodeURIComponent这两个标准就出现了,encodeURI现在已经用的少了,基本都用encodeURIComponent

encodeURI vs encodeURIComponent

不同点

encodeURI: 除掉特定字符不编码外(包括浏览器访问url里面的预留符号和其

他得一些符号), 这些不编码的符号是: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ),其他字符都要编码

encodeURIComponent: 除特定字符编码外,其他字符都编

码(包括浏览器url里面的预留字符),这些不编码的符号是:A-Z a-z 0-9 - _ . ! ~ * ' ( )

相同点

都是采用的utf-8编码

例子

var test = 'http://www.test.com/例子'

encodeURI(test) 

# "http://www.test.com/%E4%BE%8B%E5%AD%90"

encodeURIComponent(test) 

# "http%3A%2F%2Fwww.test.com%2F%E4%BE%8B%E5%AD%90"

你可能感兴趣的:(encodeURIComponent或者encodeURI 不用行不行?)