bottle, html form und decoding Problem
Verfasst: Montag 4. Oktober 2010, 22:59
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:
Im Form-Tag habe ich folgendes eingestellt:
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:
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
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" />
Code: Alles auswählen
<form action="/cart_action" name="userInput" onsubmit="return CheckInput();" method="post" accept-charset="utf-8">
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")
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