Câu hỏi này dựa trên tác dụng phụ của that one.Không thể mã hóa/giải mã đầu ra pprint
.py
file của tôi là tất cả đều có # -*- coding: utf-8 -*-
mã hóa DEFINER trên dòng đầu tiên, giống như tôi api.py
Như tôi đã đề cập về vấn đề có liên quan, tôi sử dụng HttpResponse
để trả lại tài liệu api. Kể từ khi tôi định nghĩa mã hóa bởi:
HttpResponse(cy_content, content_type='text/plain; charset=utf-8')
Mọi thứ đều ok, và khi tôi gọi dịch vụ API của tôi, không có vấn đề mã hóa trừ chuỗi hình thành từ một cuốn từ điển bằng cách pprint
Kể từ khi tôi đang sử dụng Thổ Nhĩ Kỳ nhân vật trong một số giá trị trong dict của tôi, pprint chuyển đổi chúng sang unichr
tương đương, như:
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')
Và đầu ra văn bản đơn giản của tôi là như sau:
Here is the documentation part that contains Turkish chars like işüğçö
{
1: 'm\xc3\xbc\xc5\x9fteri',
2: 'some other status message'
}
tôi cố gắng để giải mã hoặc mã hóa đầu ra pprint để mã hóa khác nhau, không có sự thành công ... thực hành tốt nhất để khắc phục vấn đề này
Cảm ơn rất nhiều, hoạt động như một sự quyến rũ (: – FallenAngel
nếu, như tôi, bạn đang cố gắng sử dụng điều này với 'pformat' (thay vì pprint) và gửi chuỗi kết quả đến một công cụ tạo khuôn mẫu như' jinja2', nó sẽ cung cấp cho bạn một 'UnicodeDecodeError', mà bạn có thể giải quyết bằng cách gọi (trong các điều khoản của câu trả lời này)' unicode (MyPrettyPrinter(). pformat (d), 'utf-8') '. – fiatjaf
Bạn có thể bọc pprint của bạn với tùy chọn thiết lập định dạng để PyPI, nó sẽ rất hữu ích. –