Как проверить и закодировать вводимые смайлы из мессенджера Facebook?

Я создаю бота для обмена сообщениями Facebook на Python. И все нормально работает. Но если я отправлю emojis в виде текста из чата Facebook в API, то все пойдет не так. Это пример, когда я отправляю emojis из Facebook.

{'message': {'mid': 'mid.1475846223244:e7eea53884', 'seq': 10863, 'text': '????????'},

Итак, received_message = message['message']['text']. Я хочу, чтобы всякий раз, когда я отправляю (эмодзи) non text message из Facebook, я могу сканировать и кодировать его, прежде чем отправлять в свой API. Я прочитал документы, прежде чем задавать этот вопрос, но большинство из них выдаются emojis пользователем, а не всем сканером, и кодируют любые emojis (если я что-то пропустил, поправьте меня, потому что я новичок). Скажите, если мне нужно обновить свой вопрос.


person Khoa Nguyen    schedule 07.10.2016    source источник
comment
Можете ли вы опубликовать repl своего «текстового» значения или указать код Unicode?   -  person Laurent LAPORTE    schedule 07.10.2016
comment
Извините, я не совсем понимаю ваш вопрос? Значение 'text' - это все, что я отправляю из Facebook, и я хочу закодировать его в Unicode, если 'text' не является string.   -  person Khoa Nguyen    schedule 07.10.2016


Ответы (2)


Вы можете использовать сопоставление между кодовыми точками Unicode и представлением ASCII. См. Такую таблицу здесь: http://lolhug.com/facebook-emoticons/

Официальная таблица смайлов находится здесь: http://unicode-table.com/en/blocks/emoticons/

Библиотека Emoji может помочь вам преобразовать ваши Emojis.

person Laurent LAPORTE    schedule 07.10.2016
comment
Спасибо за полезную информацию! Сейчас попробую! - person Khoa Nguyen; 07.10.2016
comment
Это, вероятно, не позволит вам выразить все доступные кодовые точки Unicode, такие как все смайлы. - person Simone Rondelli; 07.10.2016

Вы должны использовать экранированную версию соответствующей кодовой точки. Это метод, который позволяет вам выразить весь диапазон Unicode, используя только символы ASCII.

НАПРИМЕР. Emoji ???? может быть представлен в Java как "\uD83D\uDCA9" или в Python как u"\U0001F4A9". http://www.fileformat.info/info/unicode/char/1f4a9/index.htm

NB: некоторые смайлы состоят из нескольких кодовых точек, таких как флаги или семейства. Здесь вы найдете полный список Unicode Emojis http://unicode.org/emoji/charts/full-emoji-list.html

person Simone Rondelli    schedule 07.10.2016