Python, CGI, MySQLdb und nen Unicode-Problem


thakki

Grünschnabel
Hallöle!

Ich lasse per CGi Textfelder einlesen und die Inhalte sollen dann in eine Datenbank gespeichert werden oder eben Suchanfragen realisieren. Sobald ich Umlaute drin habe, kommt der liebe Unicodefehler...

Code:
"""UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 152: ordinal not in range(128)
      args = ('ascii', "SELECT dab_id, abbrevation FROM bioc_database WH..._database_has_taxonomy WHERE species LIKE '%\xc3\xb6%')", 152, 153, 'ordinal not in range(128)')
      encoding = 'ascii'
      end = 153
      object = "SELECT dab_id, abbrevation FROM bioc_database WH..._database_has_taxonomy WHERE species LIKE '%\xc3\xb6%')"
      reason = 'ordinal not in range(128)'
      start = 152 """
Beispielanfrage:
Code:
SELECT dab_id FROM taxonomy NATURAL JOIN bioc_database_has_taxonomy WHERE species LIKE '%"+form["taxonomy"].value+"%'"
Bisher habe ich im Netz nix hilfreiches gefunden.

Python 2.4, RedHat Linux. MySQLdb ist auch dabei...

Wie kann ich die Codierung ändern?

Code:
# -*- coding: latin1 -*-
bewirkt nichts, wenn ich per
Code:
unicode('text', 'latin-1')
konvertiere, geht das logischerweise.
Aber ich will mir ersparen, dass für jedes Textfeld machen zu müssen.

Firefox sagt mir, das Dokument sei UTF-8, Mit Eclipse wird dank dem Makro passend abgespeichert.

Dank für Hilfe!

Edit:
Jetzt bin ich doch über die Lösung gestolpert... warum nciht gleich so *narf*

Code:
imort sys
reload(sys)
sys.setdefaultencoding("latin1")
Darf also hier geschlossen werden... sorry!
 
Zuletzt bearbeitet: