Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Преобразовать юникод эмодзи в utf16

Преобразовать юникод эмодзи в utf16
Я
   prtx
 
01.05.20 - 17:56
Добрый день. Коллеги, уже бьюсь не первый день и что-то даже не могу сообразить в какую сторону копать(((
Есть эмодзи, вот оф.сайт(https://unicode.org/emoji/charts/full-emoji-list.html)
Возьмем самаю первую эмодзю)) у нее код U+1F600. Так вот мне нужно зная этот код, т.е. я получаю текст "U+1F600" преобразовать этот текст в "\ud83d\ude00"(знаю только что это представление в utf16).
Так вот как мне преобразовать этот текст в то что мне нужно? Или в какую сторону копать?...

ДЛЯ ЧЕГО МНЕ ЭТО:
Это мне нужно для отправки эмодзи в телеграмм, методом научного тыка было определено что телеграм отобразит отправленную мною "эмодзю", только если я ему передам текст в таком формате "\ud83d\ude00".

Всем спасибо, буду благодарен любой помощи!)
   prtx
 
1 - 01.05.20 - 18:04
Или может, кто-то делал телеграм бота и вышел из моей ситуации более красиво? Тогда подскажите как?

Я пока придумал на мой взгляд только такое оптимальное решение - юзер в 1с впишет текст и в текст в ставляет "U+1F600", далее перед отправкой запроса на теграмм я буду пробегать этот текст и заменять комбинации типа "U+1F600" на значения вида "\ud83d\ude00"...
   NorthWind
 
2 - 01.05.20 - 18:42
https://ru.wikipedia.org/wiki/UTF-16#.D0.9F.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF_.D0.BA.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F
алгоритм описан в разделе "Принцип кодирования"

Вот на основе вашего эмодзика. Сначала вычитаем из него 10000h, получаем 0F600h. Закидываем это на 20-битную сетку, получаем:
0000.1111.0110.0000.0000b. Разбиваем на две чиселки по 10 бит, получаем 0000.1111.01b и 10.0000.0000b. Это 3Dh и 200h. Прибавляем к ним константы D800h и DC00h, как написано в алгоритме. Получаем D83D и DE00.
   NorthWind
 
3 - 01.05.20 - 18:44
1С сейчас вроде держит бинарную рихметику, так что все должно получиться. Тут нужны будут сдвиги битов.
   Garykom
 
4 - 01.05.20 - 18:48
   NorthWind
 
5 - 01.05.20 - 19:24
(1) Можно делать вот так
ПолеВвода1 = Символ (55357) + Символ (56832);// D83D и DE00


и вполне оно всирается, правда, смайлы не такие модные как в вацапе. Но тоже ничего.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.