Emoji символы

Одна из новостей сегодняшних трендов твиттера - вконтактик добавил отображение эмоциональных значков для пользователей мобильной версии. Отмечу, что топ умеет их отображать достаточно давно для любого браузера, а не пустые квадратики, как это сделано в твиттере. Проблема этих значков в том, что 1) их много 2) они представляют из себя UTF-32 символы, в то время как большинство браузеров работает в UTF-8, а сама MSVS хоть и называет кодировку utf-8, всеравно все строки обрабатывает как UTF-16. А вот телефон, типа iphone обрабатывает все как utf-32 , поэтому у него много возможностей по добавлению дополнительных символов.

Итого, чтобы на своем сайте отобразить emoji символы достаточно 1) сделать ссылку на CSS - http://cdn.t30p.ru/t30p.ru/emoji.css , 2) При разботе строчки текста в utf-16 побайтово определять верхние и нижние суррогатные символы, из 2х таких utf-16 байтов как раз и формируется utf-32 emoji символ. 3) Получить шестизначный код utf-32 символа из двух utf-16 байтов, для этого нам помогает функция Char.ConvertToUtf32. Итак, ниже пример функции, которая находит и заменяет в строчке суррогаты на нужные SPAN.
Copy Source | Copy HTML
  1. public static string DetectSurrogates(string text)
  2.     {
  3.         StringBuilder sbOutput = new StringBuilder();
  4.         char ch;
  5.         for (int i =  0; i < text.Length; i++)
  6.         {
  7.             ch = text[i];
  8.             if ((ch >= 0x0020 && ch <= 0xD7FF) ||
  9.                 (ch >= 0xE000 && ch <= 0xFFFD) ||
  10.                 ch == 0x0009 ||
  11.                 ch == 0x000A ||
  12.                 ch == 0x000D)
  13.             {
  14.                 sbOutput.Append(ch);
  15.             }
  16.             else
  17.             {
  18.                 sbOutput.Append(String.Format("<span class=\"emoji emoji{0:x}\"></span>", Char.ConvertToUtf32(ch, text[i + 1])));
  19.                 i++;//пропускаем 1 байт
  20.             }
  21.         }
  22.         return sbOutput.ToString();
  23.     }


Метки:   Категории:Code


blog comments powered by Disqus

Добавить комментарий

Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

Не отображать

Topbot at FeedsBurner

Мои Твиты

Twitter октября 18, 06:44
Яндекс атаковал Израиль http://dlvr.it/QnhhCy

Twitter октября 17, 16:07
Как разверифицироваться в Твиттере? http://dlvr.it/Qnddsc https://twitter.com/f1ashr/status/1052591848303120390/photo/1

Twitter октября 17, 16:07
На батуте в космос http://dlvr.it/QnddrT

Twitter октября 17, 16:07
Estonian Fitsme http://dlvr.it/Qnddn3

Twitter октября 17, 16:07
Россия будет воевать http://dlvr.it/Qnddq7

Twitter октября 17, 15:33
Про браузеры http://dlvr.it/QndT1N

Twitter октября 17, 14:54
Прыгающий Робо-жук http://dlvr.it/QndGjW https://twitter.com/f1ashr/status/1052573591181582336/photo/1

Twitter октября 17, 14:54
Google Plus выкатывает красивые имена http://dlvr.it/QndGj2

Twitter октября 17, 14:54
Немецкие совестливые журналисты http://dlvr.it/QndGjD

Twitter октября 17, 09:27
Победа свободы над здравым смыслом http://dlvr.it/QnbjB5 https://twitter.com/f1ashr/status/1052491176593354752/photo/1

Twitter октября 17, 06:41
программа instagramliker обновлена 2018г http://dlvr.it/Qnb2DZ

Twitter октября 16, 07:50
CloudSearch http://dlvr.it/QnTLzB

Twitter октября 16, 07:50
Сидеть вредно. http://dlvr.it/QnTLzD

Twitter октября 16, 07:50
Вконтакте 7 лет http://dlvr.it/QnTLzH

Twitter октября 16, 07:50
Рейтинг авторитетности блогов http://dlvr.it/QnTLz2

Twitter октября 16, 07:50
Tech news http://dlvr.it/QnTLz5

Twitter октября 16, 07:13
Совет многоквартирного дома http://dlvr.it/QnTCHQ https://twitter.com/f1ashr/status/1052095075918872576/photo/1

Twitter октября 16, 07:13
Windows 10 и Новый мировой порядок http://dlvr.it/QnTCF0 https://twitter.com/f1ashr/status/1052095069317001216/photo/1

Twitter октября 16, 07:13
Украинские солдаты до сих пор не поняли с кем воюют http://dlvr.it/QnTC5Z https://twitter.com/f1ashr/status/1052095061586980864/photo/1

Twitter октября 16, 07:13
Продолжая тему браузеров http://dlvr.it/QnTC4k

Мой твиттер

Копирайт

Все мысли, высказанные в блоге, являются моим мнением и за это мнение меня никто не забанит! Кроме того, никто не имеет право копировать материалы блога без использования ctrl+C/V!

© Copyright 2008