一、为何要 urlencode()?
- 因为当字符串数据以url的情势通报给web服务器时,字符串中是不允许涌现空格和特别字符的。
- 也就是说,url的参数通报的时刻,须要遵照肯定的url范例才准确的传送。
- 一般假如一样东西须要编码,申明如许东西并不合适传输。缘由多种多样,如Size过大,包括隐私数据,关于Url来讲,之所以要举行编码,是因为Url中有些字符会引起歧义。
- 大部份须要编码的缘由是因为有特别字符(如@、#、&等)或许参数是中文情势。
- Url编码的准绳就是运用平安的字符(没有特别用处或许特别意义的可打印字符)去示意那些不平安的字符。
二、javascript中编码的函数
escape() 要领:
(1)采纳ISO Latin字符集对指定的字符串举行编码。 (2)一切的空格符、标点符号、特别字符以及其他非ASCII字符都将被转化成%xx花样的字符编码(xx即是该字符在字符集内外面的编码的16进制数字)。 (3)比方,空格符对应的编码是%20。 (4)不会被此要领编码的字符: @ * / +
encodeURI() 要领:
(1)把URI字符串采纳UTF-8编码花样转化成escape花样的字符串。 (2)不会被此要领编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 要领:
(1)把URI字符串采纳UTF-8编码花样转化成escape花样的字符串。 (2)与encodeURI()比拟,这个要领将对更多的字符举行编码,比方 / 等字符。 (3)所以假如字符串内里包括了URI的几个部份的话,不能用这个要领来举行编码,不然 / 字符被编码以后URL将显现毛病。 (4)不会被此要领编码的字符:! * ( ) '
重点:
(1)因而,关于中文字符串来讲,假如不愿望把字符串编码花样转化成UTF-8花样的(比方原页面和目的页面的charset是一致的时刻),只须要运用 escape。 (2)假如你的页面是GB2312或许其他的编码,而接收参数的页面是UTF-8编码的,就要采纳encodeURI或许 encodeURIComponent。 (3)别的,encodeURI/encodeURIComponent是在javascript1.5以后引进的,escape则在javascript1.0版本就有。
三、php中关于编码的函数
- 主如果urlencode和urldecode
- 其他的参考:https://www.cnblogs.com/xuey/…
四、划重点
- url的编码是为了让一些特别字符以及中文可以经由过程编码转换成平安的字符通报,使之相符url规范。
- 大部份的js中编码函数多运用encodeURIComponent,因为该函数是编码局限最大的函数。然则还须要根据营业需求挑选差别的编码函数。