javascript - 如何在 JavaScript 中对表情符号进行 base64 编码?

标签 javascript encoding base64

我一直在尝试将 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/

相关文章:

ajax - ajax 中没有使用 base64 编码

c# - 数字大于 255 的 Convert.ToBase64String()

javascript - 为什么使用 require './foldername/filename' 而不是 require 'foldername/filename' ?

c# - Jquery 拖放 - 无法拖回

javascript - Mongo - 如何在插入或更新给定文档之前检查现有字段

ruby - 无法将编码为 "["的 "gb2312"转换为 ruby​​1.9.3 中的 "utf-8"

flash - Flash 支持 Opus 编解码器吗?

javascript - 变量未定义。 JS

javascript - 使用 Node.js 流读取二进制数据

javascript - 二进制图像下载