Seite 1 von 1

Django POST Encoding-Problem

Verfasst: Mittwoch 9. Mai 2012, 08:09
von sparrow
Hallo Forum,

ich werte in in einem Django View die Eingabe eines Formulars aus. Da die ganze Eingabe ein bisschen speziell sein muss konnte ich nicht auf django.forms zurück greifen.

Eigentlich tut das alles was es soll:

Code: Alles auswählen

def writemail(request):
    if request.method == "POST":
        maildata["text"] = request.POST["text"]
        _send_mail_to_smtp(mail_from=maildata["mail_from"],
                           mail_to=maildata["mail_to"],
                           subject=maildata["subject"],
                           text=maildata["text"])
Umlaute funktionieren, wilde Zeichen aus dem ASCII-Bereich gehen, aber wehe jemand schreibt ein €-Zeichen:

Code: Alles auswählen

'latin-1' codec can't encode character u'\u2190' in position 144: ordinal not in range(256)
, und zwar in der Zeile in der die Paramter an die Methode _send_mail_to_smtp übergeben werden.

Das ist so eine Situation die man mit 3 Buchstaben und einem Satzzeichen audrücken kann: Höh?

Gut, ich muss gerade unter Windows entwickeln und es ist im Testlauf aufgefallen. Ich weiß nicht ob das auf dem Webserver auch auftritt, der läuft mit Debian. Aber ich traue mich nicht das Live zu bringen solange das nicht will ;)


Gruß
Sebastian

Re: Django POST Encoding-Problem

Verfasst: Mittwoch 9. Mai 2012, 08:15
von jens
Also forms kannst du eigentlich für alle Zwecke anpassen.

Sendest du die Seite auch mit einem encoding? Evtl. hilft ein accept-charset="utf-8" um die Form Daten als UTF-8 zu bekommen, siehe auch: http://www.python-forum.de/viewtopic.ph ... 33#p220233 ff

Re: Django POST Encoding-Problem

Verfasst: Mittwoch 9. Mai 2012, 08:18
von sparrow
jens hat geschrieben:Sendest du die Seite auch mit einem encoding? Evtl. hilft ein accept-charset="utf-8" um die Form Daten als UTF-8 zu bekommen
Die Daten in request.POST sind alle vom Typ unicode, reicht das nicht?

Re: Django POST Encoding-Problem

Verfasst: Mittwoch 9. Mai 2012, 09:18
von BlackJack
@sparrow: Wo tritt die Ausnahme denn nun *genau* auf? Traceback bitte. Was ist `maildata`? Kann es sein, dass das Problem gar nicht im gezeigten Quelltext auftritt sondern erst innerhalb von `_send_mail_to_smtp()`? Denn da müssen die Texte ja letztendlich irgendwie kodiert werden um sie in einer Mail versenden zu können. Wie werden sie dort kodiert?

Re: Django POST Encoding-Problem

Verfasst: Mittwoch 9. Mai 2012, 13:20
von sparrow
Argh.. danke BlackJack.

Problem gefunden. Vor lauter Wald die Bäume nicht gesehen.

Der Grund war, dass das Programm die "simplemail.py" statt der Django-internen Mail-Lösung verwendet hat. Sieht so aus als hat simplemail sich dabei irgendwie verschluckt.