Seite 1 von 1

Strings mit Umlauten in DB abfragen

Verfasst: Montag 13. September 2004, 12:00
von Patrick
Hallo,

ich frage mittels Dialog-Fenster vom Benutzer verschiedene Zeichenketten ab. Diese Zeichenketten koennen unter Umstaenden Umlaute enthalten, aus welchem Grund ich diese Strings nach Eingabe Kodiere.
Folgendermaßen:
variable = variable.encode("utf-8")

Nun ist mein Problem, dass z.B. der String 'Krüger' in der Where-Klausel der Datenbank-Abfrage kein Ergebnis liefert, obwohl ein 'Krüger' in der Datenbank zu finden ist.

Ich hoffe mir kann jemand helfen, komme im Moment leider nicht weiter.

vielen Dank,
Patrick

Verfasst: Montag 13. September 2004, 12:49
von Dookie
Hi Patrick,

erstmal solltest Du schauen, was auf dem System überhaupt für ein Zeichensatz eingestellt ist:
bei den besseren Datenbanken kannst Du den verwendeten Zeichensatz einstellen, der muss dann auch auf utf-8 stehen wenn Du die Daten als utf-8 dorthin ausgeben willst.

Code: Alles auswählen

>>> import sys

>>> fsencoding = sys.getfilesystemencoding()

>>> text = "Krüger"

>>> print repr(unicode(text, fsencoding).encode("utf-8"))
'Kr\xc3\xbcger'
Gruß

Dookie

Verfasst: Dienstag 14. September 2004, 09:26
von Patrick
Okay, danke erstmal.

Hab gestern noch 1-2 Stunden nach dem Zeichensatz utf-8 fuer MySQL gesucht, aber noch nichts gefunden.
Hat den nicht jemand selbst in seinem System? Bei mir ist er naemlich nicht enthalten. (unter character_sets)

Sollte, wenn dann, im Verzeichnis mysql/share/charsets liegen.

vielen Dank!

Verfasst: Dienstag 14. September 2004, 13:33
von Dookie
Hi Patric,

hab mal etwas rumgegoogelt, wie es ausschaut unterstützt MySQL utf-8 nur schlecht. Die utf-8 Unterstützung muss auch direkt in MySQL eincompiliert sein. Mit nachträglich installieren ist da nichts.
Sorry daß ich dir da nicht weiterhelfen kann.


Gruß

Dookie

Verfasst: Mittwoch 15. September 2004, 08:45
von Patrick
Naja, das ist ne Windows-MySQL-Version.
Im Grunde brauche ich nur die 2 utf-8 Dateien im mysql/share/charsets Verzeichnis, dann kann ich den Zeichensatz in der Konfiguration angeben.

Verfasst: Mittwoch 15. September 2004, 12:37
von Dookie
nö geht nicht, RTFM: http://dev.mysql.com/doc/mysql/de/Probl ... _sets.html
Der Zeichensatz ist ein Multi-Byte-Zeichensatz, der nicht dynamisch geladen werden kann. Wenn das der Fall ist, müssen Sie das Programm mit Unterstützung für diesen Zeichensatz neu kompilieren.

Gruß

Dookie

Verfasst: Mittwoch 15. September 2004, 14:43
von Patrick
Mag ja sein, dass ich neu kompilieren muss.
Brauche trotzdem erstmal die Datei.

Anhand deines 'read the fucking manual' moechte ich behaupten, dass ich dir auf den Geist gehe.
Dann antworte mir halt nicht, wenn's dir zuviel ist, aber nicht in so einem Ton mit mir, bitte.

Betreibe selber ein Forum im Internet und habe lange genug Support fuer einen der groessten deutschen und kostenlosen Webspace-Provider betrieben, fuer lau. Glaube bitte nicht, ich bin einer derer, die andere fuer sich arbeiten lassen.

Danke..

Verfasst: Mittwoch 15. September 2004, 15:36
von Dookie
Hat nichts mit auf den Geist gehen zu tun, ich hab nur komischerweise die Antwort auf Deine Frage in der offiziellen Dokumentation zu MySQL gefunden. Wie da steht können Multybyte Zeichensätze wie utf-8 eben nicht dynamisch geladen werden sondern muß eincompiliert sein, darum wirst auch kein entspechendes character-set finden.
Ganz egal ob Windows- oder Linux- oder sonstige Version. Im übrigen kannst ja gerne ein MySQL-Forum für Deine Frage aufsuchen, dort bist damit eh besser aufgehoben.


Gruß

Dookie

Verfasst: Samstag 18. September 2004, 14:59
von Vortec
variable = variable.encode("iso-8859-15")