gpt4 book ai didi

javascript - 为什么 window.btoa 不能处理 Javascript 中的字符?

转载 作者:行者123 更新时间:2023-12-05 01:11:22 28 4
gpt4 key购买 nike

所以我正在将字符串转换为 BASE64,如下面的代码所示...

var str = "Hello World";
var enc = window.btoa(str);

这会产生 SGVsbG8gV29ybGQ=。但是,如果我添加这些字符 – ” 如下所示,转换不会发生。这背后的原因是什么?非常感谢。

var str = "Hello – World”";
var enc = window.btoa(str);

最佳答案

btoait requires 中的奇异函数一个"Binary String" ,这是一种 8 位干净的字符串格式。它不适用于 charcode 255 以上的 unicode 值,例如您的破折号和“花哨的”引号所使用的值。

您要么必须将您的字符串转换为符合单字节打包的新字符串(然后手动重构关联的 atob 的结果),要么您可以先对数据进行 uri 编码, 使其安全:

> var str = `Hello – World`;
> window.btoa(encodeURIComponent(str));
"SGVsbG8lMjAlRTIlODAlOTMlMjBXb3JsZA=="

然后解压的时候记得再次解码:

> var base64= "SGVsbG8lMjAlRTIlODAlOTMlMjBXb3JsZA==";
> decodeURIComponent(window.atob(base64));
"Hello – World"

关于javascript - 为什么 window.btoa 不能处理 Javascript 中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63387813/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com