У меня есть текстовый файл, который содержит это:
....
{"emojiCharts":{"emoji_icon":"\u2697","repost": 3, "doc": 3, "engagement": 1184, "reach": 6734, "impression": 44898}}
{"emojiCharts":{"emoji_icon":"\U0001f924","repost": 11, "doc": 11, "engagement": 83, "reach": 1047, "impression": 6981}}
....
некоторые из смайликов в формате \uhhhh
, некоторые из них в формате \Uhhhhhhhh
.
Существует ли какой-либо способ кодировать / декодировать его для отображения смайликов? Потому что если файл содержит ТОЛЬКО \Uhhhhhhhh
, то все работает нормально.
Чтобы перейти на этот этап, я изменил файл следующим образом:
insightData.decode("raw_unicode_escape").encode('utf-16', 'surrogatepass').decode('utf-16').encode("raw_unicode_escape").decode("latin_1")
Для отображения смайликов мне нужно использовать это:
insightData.decode("raw_unicode_escape").encode('utf-16', 'surrogatepass').decode('utf-16')
НО выдает ошибку:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2600' in position 30: ordinal not in range(128)
РЕШЕНИЕ:
with open(OUTPUT, "r") as infileInsight:
insightData = infileInsight.read()\
.decode('raw_unicode_escape')
with open(OUTPUT, "w+") as outfileInsight:
outfileInsight.write(insightData.encode('utf-8'))