Diese Frage basiert auf einem Nebeneffekt von that one.Codierung/Dekodierung von Druckausgabe nicht möglich
Meine .py
Dateien sind alle # -*- coding: utf-8 -*-
Codierung definer in der ersten Zeile haben, wie mein api.py
Wie ich auf die damit verbundene Frage erwähnen, verwende ich HttpResponse
die API-Dokumentation zurückzukehren. Da ich Codierung definiert durch:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
Alles in Ordnung, und wenn ich meinen API-Service anrufen, gibt es keine Codierung Probleme außer die Zeichenfolge aus einem Wörterbuch von pprint gebildet
Da ich Türkisch bin mit Zeichen in einigen Werten in meinem dict, pprint wandelt sie in unichr
Äquivalente, wie:
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')
Und meine Klartextausgabe ist wie:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
Ich versuche pprint Ausgang zu entschlüsseln oder zu kodieren verschiedenen Kodierungen, ohne Erfolg ... Was ist die beste Praxis ist, dieses Problem zu überwinden
Danke eine Menge, funktioniert wie ein Charm (: – FallenAngel
), wenn du, wie ich, versuchst, dies mit 'pformat' (anstelle von pprint) zu verwenden und die resultierende Zeichenkette an eine Template-Engine wie' jinja2' zu senden ein 'UnicodeDecodeError', den Sie lösen können, indem Sie (im Sinne dieser Antwort)' unicode (MyPrettyPrinter() .pformat (d), 'utf-8') 'anklicken. – fiatjaf
Können Sie Ihren Ausdruck mit Format-Option umwandeln PyPI, es wird hilfreich sein. –