|  | Преобразовать юникод эмодзи в utf16 | ☑ | 
    
        | 0
    
        prtx   01.05.20✎ 17:56 | 
        Добрый день. Коллеги, уже бьюсь не первый день и что-то даже не могу сообразить в какую сторону копать(((
Есть эмодзи, вот оф.сайт()
 Возьмем самаю первую эмодзю)) у нее код U+1F600. Так вот мне нужно зная этот код, т.е. я получаю текст "U+1F600" преобразовать этот текст в "\ud83d\ude00"(знаю только что это представление в utf16).
 Так вот как мне преобразовать этот текст в то что мне нужно? Или в какую сторону копать?...
 
 ДЛЯ ЧЕГО МНЕ ЭТО:
 Это мне нужно для отправки эмодзи в телеграмм, методом научного тыка было определено что телеграм отобразит отправленную мною "эмодзю", только если я ему передам текст в таком формате "\ud83d\ude00".
 
 Всем спасибо, буду благодарен любой помощи!)
 |  | 
    
        | 1
    
        prtx   01.05.20✎ 18:04 | 
        Или может, кто-то делал телеграм бота и вышел из моей ситуации более красиво? Тогда подскажите как?
 Я пока придумал на мой взгляд только такое оптимальное решение - юзер в 1с впишет текст и в текст в ставляет "U+1F600", далее перед отправкой запроса на теграмм я буду пробегать этот текст и заменять комбинации типа "U+1F600" на значения вида "\ud83d\ude00"...
 |  | 
    
        | 2
    
        NorthWind   01.05.20✎ 18:42 | 
        
алгоритм описан в разделе "Принцип кодирования"
 
 Вот на основе вашего эмодзика. Сначала вычитаем из него 10000h, получаем 0F600h. Закидываем это на 20-битную сетку, получаем:
 0000.1111.0110.0000.0000b. Разбиваем на две чиселки по 10 бит, получаем 0000.1111.01b и 10.0000.0000b. Это 3Dh и 200h. Прибавляем к ним константы D800h и DC00h, как написано в алгоритме. Получаем D83D и DE00.
 |  | 
    
        | 3
    
        NorthWind   01.05.20✎ 18:44 | 
        1С сейчас вроде держит бинарную рихметику, так что все должно получиться. Тут нужны будут сдвиги битов.     |  | 
    
        | 4
    
        Garykom   гуру 01.05.20✎ 18:48 | 
             |  | 
    
        | 5
    
        NorthWind   01.05.20✎ 19:24 | 
        (1) Можно делать вот так 
 ПолеВвода1 = Символ (55357) + Символ (56832); // D83D и DE00
 
 и вполне оно всирается, правда, смайлы не такие модные как в вацапе. Но тоже ничего.
 |  |