bottle, html form und decoding Problem

Django, Flask, Bottle, WSGI, CGI…
Antworten
sebste
User
Beiträge: 11
Registriert: Mittwoch 22. Juli 2009, 12:50

Hallo Alle!
Ich weiss das Thema gab es schon hundert mal und eigentlich ist mir die Decoding-Geschichte recht geläufig, aber jetzt stehe ich auf dem Schlauch.

Ich habe ein XHTML-Formular

Charset ist so definiert:

Code: Alles auswählen

<meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> 
Im Form-Tag habe ich folgendes eingestellt:

Code: Alles auswählen

<form action="/cart_action" name="userInput" onsubmit="return CheckInput();" method="post" accept-charset="utf-8">
Im JavaScript passiert nichts, ausser, dass gecheckt wird, ob die Felder leer sind.

Das ganze wird an bottle übergeben.
Dort hole ich mir dann die Werte aus dem request und will sie als unicode in meiner Variable ablegen - so:

Code: Alles auswählen

customer.shipping_country=request.forms.get("country").decode("utf-8")
Komischerweise fällt mir das Script genau da mit einem klassischen UnicodDecodeError auf die Nase und beschwehrt sich, dass der "ascii" codec mit Umlauten nichts anfangen kann, wenn ich im Formular Umlaute übergebe.
Das Script selbst ist in utf-8 gespeichert und auch so gekennzeichnet: # -*- coding: utf-8 -*-

Eigentlich sollte es doch so gehen, oder? Macht Bottle irgendwas mit dem Character-Set?

sys.getdefaultencoding() sagt "ascii", aber das sollte doch ok sein, oder?
sys.setdefaultencoding() gibt´s auf dem System nicht mehr, ist aber eh böse, wie ich gelesen hab.

Irgend eine Idee?

Danke, liebe Grüße, Sebastian
BlackJack

@sebste: Überprüfe doch mal was ``request.forms.get("country")`` für einen Typ liefert und sieh Dir die Fehlermeldung genau an und poste sie auch komplett.
sebste
User
Beiträge: 11
Registriert: Mittwoch 22. Juli 2009, 12:50

Hi BlackJack!
Nun hab ich mich also mal an die Typenbestimmumg gemacht. Heraus kam ein <str>, und plötzlich ging´s.
Verutlich hätte es geholfen, wenn ich gleich die .wsgi-Datei statt der .py Datei editiert hätte :oops:
Ist schon spät und ich saß wohl zu fest auf meinen Augenliedern.

Sorry - und danke für Deine Hilfe.

Liebe Grüße, Sebastian
Antworten