Strings mit Umlauten in DB abfragen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

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!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

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.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Patrick
User
Beiträge: 49
Registriert: Montag 5. Juli 2004, 06:35
Wohnort: Berlin
Kontaktdaten:

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..
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Vortec
User
Beiträge: 52
Registriert: Dienstag 10. Dezember 2002, 11:54

variable = variable.encode("iso-8859-15")
Antworten