2016-09-28 3 views
1

Я пытаюсь читать кириллические символы из некоторого файла JSON, а затем выводить его на консоль с помощью Python 3.4.3 на Windows. Нормальная печать («Русский smth буквы») работает по назначению.JSON, напечатанный на консоль, показывает неправильную кодировку

Но когда я печатаю содержимое JSON, оно, кажется, печатает в Windows-1251 - «СЂСѓСЃСЃРєРёРμ Р ± СѓРєРІС <" (хотя моя консоль, мой JSON-файл и мой .py (с комментарием) находятся в UTF-8).

Я попытался перекодировать его на Win-1251 и настроить консоль на Win-1251, но все равно не повезло.

Моя JSON (закодированные в UTF-8):

{ 
    "русские буквы": "что-то ещё на русском", 
    "english letters": "и что-то на великом" 
} 

Мой код для загрузки словаря:

def load_dictionary(): 
global Dictionary, isFatal 
try: 
    with open(DictionaryName) as f: 
     Dictionary = json.load(f) 
except Exception as e: 
    logging.critical('Error loading dictionary: ' + str(e)) 
    isFatal = True 
    return 
logging.info('Dictionary was loaded successfully') 

Я пытаюсь вывести его в 2 способами (как показывают та же тарабарщина):

print(helper.Dictionary.get('rly')) 
print(helper.Dictionary) 

Интересное дополнение: я добавил весь русский алфавит в свой файл JSON и, кажется, застрял в письме «С с». (Ошибка загрузки словаря: кодек «charmap» не может декодировать байт 0x81 в позиции X: символьные карты в). Если я удалю эту одну букву, она не станет исключением, но проблема выше.

+0

Мы видим, как вы загружаете в JSON, но где и как вы его вывода? – deceze

+0

Добавил эту информацию, извините. @deceze –

+2

Вероятно, 'open (DictionaryName, encoding =" utf8 ")' помогает – nauer

ответ

0

"Но когда я печатаю содержание JSON ..."

Если вы печатаете его с помощью команды type, то вы получите mojibakeСЂСѓСЃСЃРєРёРµ … вместо русские … под CHCP 1251 области.

Пробег: type Под CHCP 65001 (i.e. UTF-8) Объем.

nauer's advice, использование open(DictionaryName, encoding="utf8").

Пример (39755662.json сохраняется с UTF-8 кодирования):

==> chcp 866 
Active code page: 866 

==> type 39755662.json 
{ 
    "╤А╤Г╤Б╤Б╨║╨╕╨╡ ╨▒╤Г╨║╨▓╤Л": "╤З╤В╨╛-╤В╨╛ ╨╡╤Й╤С ╨╜╨░ ╤А╤Г╤Б╤Б╨║╨╛╨╝", 
    "rly": "╤А╤Г╤Б╤Б╨║╨╕╨╣" 
} 

==> chcp 1251 
Active code page: 1251 

==> type 39755662.json 
{ 
    "русские буквы": "что-то ещё на русском", 
    "rly": "СЂСѓСЃСЃРєРёР№" 
} 

==> chcp 65001 
Active code page: 65001 

==> type 39755662.json 
{ 
    "русские буквы": "что-то ещё на русском", 
    "rly": "русский" 
} 

==> 
Смежные вопросы