escape与encodeURI、encodeURIComponent的区别
比较js中的escape、encodeURI、encodeURIComponent
escape:
escape是会除@*_-+./以外的所有标点符号、空格符、特殊符及非ASC码的所有字符进行编码的函数。编码格式为:%XX,如空格是%20,对于ASC值超过128的会用%uXXXX表示。如汉字“好”编码是%u6FC2%uFFFD
encodeURI:
encodeURI不会进行编码的符号是:
!@#$&*()_+-=;:',./?~
encodeURIComponent:
encodeURIComponent不会进行编码的符号是:
!*()_-'.~
区别与共同:
1、从上面比较可知,encodeURIComponent会进行编码的符号比encodeURI多,而且会把/进行编码,所以不能使用encodeURIComponent对url进行编码。其时它的主要用途是对url的参数进行编码。
2、三个函数编码的符号集不同以外,对于ASC码的编码格式都是一样的。但是对于双字节编码就不同了。比如:“好”的encodeURI和encodeURIComponent的编码是%E6%BF%82%EF%BF%BD。
原因是escape是采用ISO Latin字符集进行编码的,而其他两个是用UTF-8进行编码的。所以如果想在GBK上的页面把参数传给UTF-8的页面,就要使用后面两个了。因为它们会把字符集转成UTF-8再进行编码。