首页 > web前端 > js教程 > 正文

为什么 Javascript 的 `atob` 无法正确解码 UTF-8 base64 字符串?

DDD
发布: 2024-11-01 23:10:29
原创
378 人浏览过

Why does Javascript's `atob` fail to decode UTF-8 base64 strings properly?

使用Javascript的atob解码base64不能正确解码utf-8字符串

Javascript的atob可以正确解码已经编码的base64字符串对于 ASCII 字符,例如 window.atob('YQ==') 将返回 ASCII 字符“a”。但是,它无法正确解码使用 UTF-8 Unicode 字符编码的 Base64 字符串,例如 window.atob('4pyTIMOgIGxhIG1vZGU=') 将返回 'ââ la mode' 而不是 '✓ à la mode' .

要正确解码使用 UTF-8 编码的 Base64 字符串,我们需要使用 escape 和 unescape 函数。在这种情况下,window.atob(unescape(encodeURIComponent('✓ à la mode'))) 将返回 '4pyTIMOgIGxhIG1vZGU=' 并且 window.atob('4pyTIMOgIGxhIG1vZGU=') 将返回 '✓ à la mode'。

处理传入的 base64 编码流以便将其解码为 utf-8 的另一个选项是使用 TextDecoder 类。此类提供了一种将 Base64 编码的字符串解码为 UTF-8 字符串的方法。以下是如何使用它的示例:

<code class="javascript">const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'</code>
登录后复制

以上是为什么 Javascript 的 `atob` 无法正确解码 UTF-8 base64 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!