将两个代码点表情符号放入字符串中?

Putting Two Code-Point Emoji into String?

给出以下来自 http://unicodey.com/emoji-data/table.htm 的表情符号:

姓名:regional indicator symbol letters ma

unicode 值:U+1F1F2 U+1F1E6

它的代码点值应该是多少?

示例:

感叹号的代码点值为 33,即 0x21 到基数 10 = 33

scala> "\u0021"
res11: String = !

scala> "\u0021".codePoints.toArray
res12: Array[Int] = Array(33)

所以,在这种情况下,我可以简单地将 \u0021 放入一个字符串中。但是,如何创建一个 String 来包含 regional indicator symbol letters ma

构造字符串的方法如下:

scala> val points = Array(0x1F1F2, 0x1F1E6)
points: Array[Int] = Array(127474, 127462)

scala> val string = new String(points, 0, points.length)
string: String = 

编辑:以下部分是我的原始答案,希望对某人有所帮助

我认为您对 "emoji" 的工作原理有点误解。如果将您感兴趣的 :flag-ma::flag-mc:

进行比较

您会注意到 unicode 的第一部分是相同的 U+1F1F2,对应于字母 "m"。这意味着您实际上不是在处理单个表情符号,它实际上是两个独立的表情符号,当按特定顺序显示时,它们会显示为给定的标志。

例如,以下是 GB 表情符号 (U+1F1EC U+1F1E7) 在某些平台上的呈现方式(注意它并不总是一个标志):