To pytanie jest oparte na skutku ubocznym that one.Nie można zakodować/odkodować danych wyjściowych pprint
Moi .py
pliki są wszyscy mają # -*- coding: utf-8 -*-
kodowania Definer na pierwszej linii, jak mój api.py
Jak wspomina na powiązane pytanie, używam HttpResponse
aby powrócić do dokumentacji API. Odkąd zdefiniowano kodowania przez:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
wszystko jest OK, a kiedy ja nazywam moją usługę API, nie ma problemów kodowania wyjątkiem ciąg utworzone ze słownika przez pprint
ponieważ używam Turkish znaków w niektórych wartości w moim dict, pprint konwertuje je do unichr
odpowiedników, takich jak:
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')
I moje wyjście jest jak zwykły tekst:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
próbuję rozszyfrować lub wyjście zakodować pprint do różnych kodowań, ale bez powodzenia ... Co to jest najlepsze praktyki do przezwyciężenia tego problemu
Dzięki dużo, działa jak czar (: – FallenAngel
jeśli, jak ja, próbujesz użyć tego z 'pformat' (zamiast pprint) i wysłać wynikowy ciąg do silnika szablonowego, takiego jak' jinja2', da ci to a "UnicodeDecodeError", który możesz rozwiązać, wywołując (w warunkach tej odpowiedzi) 'unicode (MyPrettyPrinter(). pformat (d), 'utf-8')'. – fiatjaf
Czy możesz owinąć twój Pprint z opcją ustawienia formatu do PyPI, to będzie pomocne. –