Questa domanda è basata su un effetto collaterale di that one.Impossibile codificare/decodificare l'output pprint
miei file .py
sono tutti hanno # -*- coding: utf-8 -*-
codifica definitore sulla prima linea, come la mia api.py
Come detto sul relativo domanda, io uso HttpResponse
per restituire la documentazione delle API. Dal momento che ho definito la codifica da:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
tutto è ok, e quando chiamo il mio servizio API, non ci sono problemi di codifica, tranne la stringa formata da un dizionario per pprint
Dal momento che sto usando turco personaggi di alcuni valori nel mio dizionario, pprint li converte in unichr
equivalenti, come:
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')
E la mia uscita di testo normale è come:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
cerco di decodificare o codificare l'uscita pprint a differenti codifiche, senza successo ... Qual è la prassi migliore per superare questo problema
Grazie molto, funziona come un incantesimo (: – FallenAngel
se, come me, stai cercando di usarlo con 'pformat' (invece di pprint) e manda la stringa risultante a un motore di template come' jinja2', ti darà un 'UnicodeDecodeError', che puoi risolvere chiamando (nei termini di questa risposta)' unicode (MyPrettyPrinter(). pformat (d), 'utf-8') '. – fiatjaf
Puoi avvolgere il tuo pprint con l'opzione set format su PyPI, sarà utile. –