javascript 为什么atob和btoa在使用上没有区别?

gblwokeq  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(112)

当然,我读过关于atob()btoa()MDN website中的JavaScriptBase64解码和编码功能。
但在使用中,我犯了一个错误 * 但 * 一切都工作得很好,这对我来说很奇怪。下面的代码:

const en = btoa('amer');
const de = atob(en);

字符串
绝对console.log(de)显示"amer"。但我犯了个错误

const en = atob('amer'); 
const de = btoa(en);


令人惊讶的是,console.log(de)再次显示"amer"!我不明白为什么!atob()方法用于解码,我将其用作编码函数,但它可以工作,然后btoa()函数解码此错误的结果并返回"amer"!虽然我预计de必须是一个错误的和不同的东西。

6gpjuf90

6gpjuf901#

在这些API中,出于助记的目的,“B”可以被认为代表“二进制”>,而“a”代表“ASCII”。实际上,由于历史原因,这些函数的输入和输出都是Unicode字符串。
https://www.w3.org/TR/html/webappapis.html#base64-utility-methods

console.log(atob("testString")) // µë-JÚâ
console.log(btoa("µë-JÚâ")) //testString==
console.log(btoa("testString")) // dGVzdFN0cmluZw==
console.log(atob("dGVzdFN0cmluZw==")) // testString
console.log(atob("dGVzdFN0cmluZw")) // testString, even works with no ==

字符串

相关问题