将 Unicode 转换为表情符号的正确方法是什么?

Min*_*ina 1 javascript unicode console emoji console.log

我有一个包含 Unicode 数据的数组,例如var data = ["1F923", "1F603"] 如何将 Unicode 转换为表情符号?

如果我"\u{1F923}"在控制台中使用,它会返回一个表情符号,但如果我使用"\u{"+ data[0] +"}",它会返回一个错误。任何人都可以帮我将 unicode 转换为表情符号。

Ral*_*edl 10

表情符号是 unicode 的一个子集。没有必要或可能从 unicode 到 emoji 的转换。只需将您的数组更改为

var data = ["\u{1F923}", "\u{1F603}"]
Run Code Online (Sandbox Code Playgroud)

如果您的输入是十六进制数,则可以使用

String.fromCodePoint(parseInt ("1F923", 16))
Run Code Online (Sandbox Code Playgroud)

在 HTML 中,您还可以使用 HTML 十六进制实体

"&#x" + "1F923" + ";"
Run Code Online (Sandbox Code Playgroud)


Hak*_*çer 6

你可以使用这个 javascript 函数将 unicode 转换为表情符号

    var unicodeToChar = function(text) {
  return text.replace(/\\u[\dA-F]{4}/gi, function(match) {
      return String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16));
  });
}
Run Code Online (Sandbox Code Playgroud)

新版本

    var emojiToUnicode = function(text) {
    var emojiUnicodes = ''
    var i;
    var matchedText = text.match(regex);
    if (matchedText != null) {
        var unicodes = text.match(regex)
            .map(e => "\\u" + e.charCodeAt(0).toString(16) + "\\u" + e.charCodeAt(1).toString(16));
        for (i = 0; i < unicodes.length; i++) {
            emojiUnicodes = emojiUnicodes + unicodes[i]
        }
        text = text.replace(regex, '') + emojiUnicodes.replace(/\\"/g, '\"');
    }
    return text;
}
Run Code Online (Sandbox Code Playgroud)

您可以通过在 Github 上搜索以下代码片段来找到示例正则表达式。

/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}
Run Code Online (Sandbox Code Playgroud)

如果你想将 unicode 转换为表情符号,这是函数

    var unicodeToChar = function(text) {
    return text.replace(/\\u[\dA-F]{4}/gi, function(match) {
        return String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16));
    });
}
Run Code Online (Sandbox Code Playgroud)