JavaScript中有三个字符串编码的函数:escape,encodeURI,encodeURIComponent,对应的3个解码函数:unescape,decodeURI,decodeURIComponent 。
escape() 函数
可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
提示: 使用 unescape() 方法对字符串进行解码。
encodeURI() 函数
可把字符串作为 URI 进行编码。
对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的: , / ? : @ & = + $ # (可以使用 encodeURIComponent() 方法分别对特殊含义的 ASCII 标点符号进行编码。).
提示:使用 decodeURI() 方法可以解码URI(通用资源标识符:UniformResourceIdentifier,简称"URI")。
encodeURIComponent() 函数
可把字符串作为 URI 组件进行编码。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
http://编码的结果
encodeURIComponent会把http:// 编码成 http%3A%2F%2F 而encodeURI却不会。
encodeURI('https://www.woaidaogu.com/') //"https://www.woaidaogu.com/"
encodeURIComponent('https://www.woaidaogu.com/') //"https%3A%2F%2Fwww.woaidaogu.com%2F"
用那个函数更适合?
1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。
2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。
3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。
举例说明
var a = "http://www.woaidaogu.com/?ref=toolbar_logo&test=测试" escape(a) //"http%3A//www.woaidaogu.com/%3Fref%3Dtoolbar_logo%26test%3D%u6D4B%u8BD5" unescape("http%3A//www.woaidaogu.com/%3Fref%3Dtoolbar_logo%26test%3D%u6D4B%u8BD5") //"http://www.woaidaogu.com/?ref=toolbar_logo&test=测试" encodeURI(a) //"http://www.woaidaogu.com/?ref=toolbar_logo&test=%E6%B5%8B%E8%AF%95" decodeURI("http://www.woaidaogu.com/?ref=toolbar_logo&test=%E6%B5%8B%E8%AF%95") //"http://www.woaidaogu.com/?ref=toolbar_logo&test=测试" encodeURIComponent(a) //"http%3A%2F%2Fwww.woaidaogu.com%2F%3Fref%3Dtoolbar_logo%26test%3D%E6%B5%8B%E8%AF%95" decodeURIComponent("http%3A%2F%2Fwww.woaidaogu.com%2F%3Fref%3Dtoolbar_logo%26test%3D%E6%B5%8B%E8%AF%95") //"http://www.woaidaogu.com/?ref=toolbar_logo&test=测试"
通过以上内容我们知道了escape()、encodeURI()、encodeURIComponent()函数都适合什么时候使用,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!