2016-11-21 3 views
0

Учитывая следующий смайлик из http://unicodey.com/emoji-data/table.htm:Ввод двух кодовых точек Emoji в строку?

Имя: значения regional indicator symbol letters ma

Юникода: 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?

ответ

4

Вот как можно построить строку:

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

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

Изменить: ниже часть была мой первоначальный ответ, который я надеюсь, будет полезным для кого-то

Я думаю, что вы немного неправильно как работает этот «эможи». Если сравнить :flag-ma:, которые вы заинтересованы в к :flag-mc:

enter image description here

Вы заметите, что первая часть юникода те же U+1F1F2, что соответствует букве «м». Это означает, что вы на самом деле не имеете дело с одним emoji, его фактически двумя отдельными, которые в определенной последовательности отображаются как заданный флаг.

В качестве примера, вот как смайлики GB (U+1F1EC U+1F1E7) визуализируются на некоторых платформах (обратите внимание, как это не всегда флаг): enter image description here

+0

Но почему 's' есть 4 кодовых точки? 'scala> val s =" \ u1f1f2 \ u1f1e6 "| scala> s.codePoints.toArray' возвращает 'res45: Array [Int] = Array (7967, 50, 7966, 54)' –

Смежные вопросы