Esta pregunta se basa en un efecto secundario de that one.Imposible codificar/descodificar la salida de impresión
Mis .py
archivos son todos tienen # -*- coding: utf-8 -*-
codificación definidor en la primera línea, como mi api.py
Como menciono en la pregunta relacionada, yo uso HttpResponse
para devolver la documentación de la API. Puesto que he definido codificación por:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
todo está bien, y cuando llamo a mi servicio API, no hay problemas de codificación excepto la cadena formada a partir de un diccionario por pprint
Desde que estoy usando turca personajes de algunos valores en mi dict, pprint los convierte en unichr
equivalentes, como:
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')
Y mi salida de texto sin formato es como:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
trato de descifrar o salida de codificación pprint a diferentes codificaciones, sin éxito ... ¿Cuál es la mejor práctica para superar este problema
Gracias mucho, funciona como un amuleto (: – FallenAngel
si, como yo, estás tratando de usar esto con 'pformat' (en lugar de pprint) y enviar la cadena resultante a un motor de plantillas como' jinja2', te dará un 'UnicodeDecodeError', que puede resolver llamando (en los términos de esta respuesta)' unicode (MyPrettyPrinter(). pformat (d), 'utf-8') '. – fiatjaf
¿Puede envolver su pprint con la opción de configuración de formato para PyPI, será útil. –