Задать вопрос
gluck59
@gluck59
Виртуальный глюк

Как «устроены» Emoticons?

Как "устроены" Emoticons?
Как можно однозначно определять, что они присутствуют в полученном ответе?
Вот например:
{
"date":1476961874,
"text":"\ud83c\udf45"
}
  • Вопрос задан
  • 280 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Вопрос: этот JSON мы разбираем или нет?
Для простоты предположим, что разбираем (ну или транслятор JS разбирает — всё едино). Тогда текст у нас закодирован в UTF-16.
• Символы 0000…D7FF — они и есть.
• Символы D800…DBFF — за этим символом должен идти символ из DC00…DFFF, и они образуют суррогатную пару, которая будет одним символом. Подробнее гугли «UTF-16». Если идёт один из этих двух символов без пары — это некорректный UTF-16.
• И символы E000…FFFF также кодируются как есть.

Вот эта суррогатная пара, которую ты подкинул, кодируется в символ 1F345, помидор какой-то.

Функция конвертации суррогатной пары в код символа:
charCode = 0x10000 + ((leadingCode & 0x3FF) << 10) + (trailingCode & 0x3FF)

А уж какие коды вам не нужны — копайте таблицы Юникода.

Более простой способ, который вам может подойти — запретить все суррогатные пары.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы