request.POST.get('resp_162')
ein unicode
Objekt (Unicode-String) zurückkehren - oder None
aber gut, das ist ein anderes Problem. Es gibt zwei Möglichkeiten, wie Sie es in ein str
Objekt (Byte-String) konvertieren können: indem Sie es an str
übergeben - dh str(request.POST.get('resp_162'))
- oder, indem Sie es in einen Byte-String-Codec mit unicode.encode(...)
, dh request.POST.get('resp_162').encode("utf-8")
. Die erste Lösung verwendet den Codec "ascii", der zweite den Codec, nach dem Sie fragen.
Da bist du erste Ihre unicode
Zeichenfolge str
vorbei und es enthält nicht-ASCII-Zeichen erhalten Sie einen UnicodeEncodeError
an dieser Stelle. IOW: Verwenden Sie einfach die zweite Lösung und Sie werden keinen Fehler haben.
Dies wird gesagt: intern verwendet Django nur Unicode-Strings (für das, was Sie von Ihren Modellen, Formulare, Anfrage usw. erhalten), und die einzige vernünftige Ansatz ist überall an Unicode-Strings bleiben (Decodierung der Byte-Strings am Systemeingang) und kodiere sie zu der gewünschten Kodierung bei der Systemausgabe). Ich weiß nicht, was l.answer
in Ihrem Snippet ist, aber wenn 'l' (sehr schlechte Namenswahl FWIW) ist eine Modellinstanz und .answer
ein Textfeld, es ist bereits eine unicode
Zeichenfolge, so dass Sie wirklich nicht versuchen sollten, es zu einem zu machen Byte-Zeichenfolge.
Mögliches Duplikat von [Kodierung gibt "'ascii' Codec kann Kodierung nicht kodieren ... ordinal nicht im Bereich (128)"] (http://stackoverflow.com/questions/2513027/encoding-gives-asci-i-codec cant-encode-character-ordinal-not-in-range128) – Sayse
Warum versuchen Sie, es in eine Bytefolge zu konvertieren, anstatt es als Text zu behalten? –
Ich habe versucht mit und ohne den '.encode (' utf-8 ') und bekomme den gleichen Fehler – HenryM