我一直在尝试将 Twitter 嵌入代码编码为 base64,它可能包含也可能不包含一个或多个表情符号。所以当字符串中有表情符号时,我得到这个错误:
未捕获的 DOMException:无法在“Window”上执行“btoa”:要编码的字符串包含 Latin1 范围之外的字符。
有什么我可以做的,当我在我的字符串上运行 btoa() 时,它对包括表情符号在内的整个字符串进行编码,当我在 php 中使用 base64_decode 对其进行解码时,表情符号再次出现?
提前致谢!
最佳答案
您可以通过先转义它然后对其调用 EncodeUriComponent 来对其进行编码。
看起来像这样:
btoa(unescape(encodeURIComponent('😂')));
上面的表情符号会返回“8J+Ygg==”
要解码它你会这样做
decodeURIComponent(escape(atob('8J+Ygg==')));
您可以编写两个函数来简化此操作:
// Encode
function utoa(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// Decode
function atou(str) {
return decodeURIComponent(escape(atob(str)));
}
来源: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa
关于javascript - 如何在 JavaScript 中对表情符号进行 base64 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56647747/