Как декодировать Unicode-строку JSON в Python? - PullRequest
0 голосов
/ 05 марта 2019

Как мне напечатать decoded_json ниже, чтобы появился эмодзи?

>>> raw_json = '"smile ?"'
>>> decoded_json = cjson.decode(raw_json)
>>> decoded_json
u'smile \xf0\x9f\x98\x8a'

>>> print decoded_json
smile ð

>>> print 'smile \xf0\x9f\x98\x8a' # u' removed
smile ?

Кажется, что cjson.decode возвращает u' строку юникода.Эта строка в юникоде имеет правильное байтовое представление смайликов, но когда строка печатается, вместо смайликов появляется другой символ.Когда я печатаю ту же строку с удаленным u', это работает.

Могу ли я что-нибудь сделать с decoded_json, чтобы он напечатал эмодзи?

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Добавьте правильную кодировку поверх ваших .py файлов и используйте модуль json.

Используемый Python: (как ваш)

$ python --version
Python 2.7.14+

Код:

# -*- coding: utf-8 -*-
import json

raw_json = '"smile ?"'
decoded_json = json.loads(raw_json)
print decoded_json
print 'smile \xf0\x9f\x98\x8a'

Выход:

python unicode.py
smile ?
smile ?
0 голосов
/ 05 марта 2019

Использовать встроенный json модуль:

import json
raw = '{"?": "smile"}'
print(json.loads(raw))

enter image description here

...