Этот вопрос базируется на побочном эффекте that one.Невозможно кодировать/декодировать вывод pprint
Мои .py
файлы все имеют # -*- coding: utf-8 -*-
кодирования Определитель на первой линии, как мой api.py
Как я уже на связанный с этим вопрос, я использую HttpResponse
вернуть документацию API. Так как я определил кодировку:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
Все нормально, и когда я называю службу API, не существуют никаких проблем кодирования, кроме струны, образованная из словаря pprint
Поскольку я использую турецкий символы в некоторых значениях в моем Словаре, pprint преобразует их в unichr
эквиваленты, как:
API_STATUS = {
1: 'müşteri',
2: 'some other status message'
}
my_str = 'Here is the documentation part that contains Turkish chars like işüğçö'
my_str += pprint.pformat(API_STATUS, indent=4, width=1)
return HttpRespopnse(my_str, content_type='text/plain; charset=utf-8')
И мой обычный выходной текст как:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
Я пытаюсь расшифровать или выход кодирования pprint в различные кодировки, без успеха ... Что является лучшей практикой для преодоления этой проблемы
Спасибо много, работает как шарм (: – FallenAngel
, если, как и я, вы пытаетесь использовать это с помощью 'pformat' (вместо pprint) и отправляете результирующую строку в механизм шаблонов, такой как' jinja2', это даст вам 'UnicodeDecodeError', который вы можете решить, вызвав (в терминах этого ответа)' unicode (MyPrettyPrinter() .pformat (d), 'utf-8') '. – fiatjaf
Можете ли вы обернуть свой префикс с помощью параметра набора опций PyPI, это будет полезно. –