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 мая 25, 17:18
Рейтинг каналов и ботов Телеграм http://dlvr.it/QV5d6Y

Twitter мая 25, 16:12
Пример божественного вмешательства в фильме No country for old men http://dlvr.it/QV5HxB https://twitter.com/f1ashr/status/1000046919136067586/photo/1

Twitter мая 25, 15:06
Танцы человека с роботом http://dlvr.it/QV4y0p

Twitter мая 25, 13:30
роботы пишут жалобы http://dlvr.it/QV4QQG

Twitter мая 25, 09:43
Шахматная композиция для демонстрации 3-го этапа общества http://dlvr.it/QV3G9p https://twitter.com/f1ashr/status/999948953805180928/photo/1

Twitter мая 25, 09:11
Hoverbike for US Army http://dlvr.it/QV3674

Twitter мая 25, 08:07
Google AdWords купон на 1600p http://dlvr.it/QV2pMz

Twitter мая 25, 08:07
Соц.медиа http://dlvr.it/QV2pNR

Twitter мая 25, 08:07
Мониторинг соц.сетей на госзакупках - 5 http://dlvr.it/QV2pP3

Twitter мая 24, 16:21
Казахстан переходит на 2-й этап к демократии http://dlvr.it/QTz5QX

Twitter мая 24, 03:31
Проблемы восприятия информации людишками http://dlvr.it/QTvLgN

Twitter мая 23, 14:09
Поиск причины популярности спиннеров http://dlvr.it/QTqqGv https://twitter.com/f1ashr/status/999291326867820545/photo/1

Twitter мая 23, 13:37
Программа InstagramLiker обновлена http://dlvr.it/QTqdn2

Twitter мая 22, 17:51
Про найм вконтактика http://dlvr.it/QTkc7x

Twitter мая 22, 17:19
Этой осенью "A New Beginning for Mankind.." http://dlvr.it/QTkSGQ https://twitter.com/f1ashr/status/998976610354151424/photo/1

Twitter мая 22, 16:47
В Ступино напечатали первый 3D дом http://dlvr.it/QTkGv5

Twitter мая 22, 15:11
коломенский кремль: альтернативная история 2 http://dlvr.it/QTjlrg https://twitter.com/f1ashr/status/998944561769541634/photo/1

Twitter мая 22, 15:11
Яндекс атаковал Израиль http://dlvr.it/QTjlr0

Twitter мая 22, 14:38
"Добродел" добавлен в http://t30p.ru http://dlvr.it/QTjYqX

Twitter мая 22, 14:38
Перенос коллапса товарооборота в Беларуси на 2018 год http://dlvr.it/QTjYr6

Мой твиттер

Копирайт

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

© Copyright 2008