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

What is the correct way to convert Unicode to emoji?

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

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

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

var data = ["\u{1F923}", "\u{1F603}"]

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

String.fromCodePoint(parseInt ("1F923", 16))

在HTML中你也可以使用HTML十六进制实体

"&#x" + "1F923" + ";"

const unicode = ["1f47f", "1f601", "1f60b", "1f62c", "1f9d0", "1f47f", "1f600", "1f601", "1f602", "1f603", "1f604", "1f605", "1f606", "1f607", "1f608", "1f609", "1f60a", "1f60b", "1f60c", "1f60d", "1f60e", "1f60f", "1f610", "1f611", "1f612", "1f613", "1f614", "1f615", "1f616", "1f617", "1f618", "1f619", "1f61a", "1f61b", "1f61c", "1f61d", "1f61e", "1f61f", "1f620", "1f621", "1f622", "1f623", "1f624", "1f625", "1f626", "1f627", "1f628", "1f629", "1f62a", "1f62b", "1f62c", "1f62d", "1f62e", "1f62f", "1f630", "1f631", "1f632", "1f633", "1f634", "1f635", "1f636", "1f637", "1f641", "1f642", "1f643", "1f644", "1f910", "1f911", "1f912", "1f913", "1f914", "1f915", "1f917", "1f922", "1f923", "1f924", "1f925", "1f927", "1f928", "1f929", "1f92a", "1f92b", "1f92c", "1f92d", "1f92e", "1f92f", "1f970", "1f973", "1f974", "1f975", "1f976", "1f97a", "2639", "263a"]


unicode.forEach((val) => {
  document.body.innerHTML += String.fromCodePoint(parseInt(val, 16))
});

你可以使用此 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));
  });
}

新版本

    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;
}

You can find sample regexes by searching the following code snippet on Github.

/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}

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

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