У меня есть простой скрипт на Python, который получает текст твита.
Однако эмодзи каким-то образом закодированы, поэтому в выводе \xf0\x9f\x90\xa3 они выглядят так.
Есть ли способ узнать, что это за смайлик из этого вывода?
У меня есть простой скрипт на Python, который получает текст твита.
Однако эмодзи каким-то образом закодированы, поэтому в выводе \xf0\x9f\x90\xa3 они выглядят так.
Есть ли способ узнать, что это за смайлик из этого вывода?
Скорее всего, это кодировка UTF-8 (наряду с остальными данными, просто текст ASCII отображается одинаково в ASCII и UTF-8).
Если у вас есть bytes
как b'\xf0\x9f\x90\xa3'
, вы просто сделаете:
b = b'\xf0\x9f\x90\xa3'
txt = b.decode('utf-8')
Если вы получили его как str
, это, вероятно, ошибочное декодирование как latin-1
или какая-то другая кодовая страница, поэтому просто отмените его и повторите с UTF-8:
b = '\xf0\x9f\x90\xa3'
txt = b.encode('latin-1').decode('utf-8')
# If it's not latin-1, could be sys.getdefaultencoding()
Который получает порядковый номер 0x1f423 (мой компьютер не может его отобразить, иначе я бы добавил его здесь), который находится в правильном диапазоне для большинства смайликов. Как отмечено в комментариях, unicodedata
сообщает о символе как HATCHING CHICK
.
import unicodedata; print(unicodedata.name(b"\xf0\x9f\x90\xa3".decode('utf-8')))
говоритHATCHING CHICK
. Трудно сказать больше, не зная, что именно делает ваш скрипт... - person mata   schedule 31.03.2016\xf0\x9f\x90\xa3
, поэтому похоже, что он хочет знать, что это за смайлики на самом деле... - person Aaron   schedule 31.03.2016