Also ich arbeite ja gerade an PyLucid v0.7... Dabei möchte ich das unicode Thema nochmal anfassen. Allerdings hab ich da gerade ein paar Schwirigkeiten...
Wenn ich Daten aus der DB hole, sind diese vom Typ String.
Ich hab in MySQL die betreffenden Spalten/Tabellen mit Collation = utf8_unicode_ci versehen.
Das ich nicht direkt unicode bekomme kann ich ja noch verstehen, da muß ich mich wahrscheinlich direkt mit MySQLdb auseinandersetzten...
Ich habe allerdings getestet, direkt in meiner gewrappten fetchall()-Methode immer ein .decode("utf_8") zu machen, damit ich generell intern mit nur unicode hantieren muß...
Das geht allerdings nicht! mit einem .decode("utf_8") erhalte ich einen UnicodeError...Komisch ist allerdings, das es mit .decode("latin-1") funktioniert!
Weiß jemand Rat?
MySQL collation und UTF-8...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab was bei http://bugs.mysql.com/bug.php?id=7976 gefunden:
Wenn ich das nach dem connect mache, erhalte ich zwar auch nicht direkt UTF-8, allerdings funktioniert dann ein .decode("utf_8"), so wie es soll!
Ich hatte schon mal früher festgestellt, das es beim mySQLdb Modul einen Parameter use_unicode beim connect() gibt! Allerdings gibt es den erst ab einer bestimmten Version des Moduls...
Nun frage ich mich, ob ich nicht besser mit den obrigen SQL-Statements fahre...
Edit: So, jetzt weiß ich warum es mit "latin-1" klappt! Auszug aus "SHOW VARIABLES;"
Code: Alles auswählen
self.cursor.execute('set character set utf8')
self.cursor.execute('set names utf8')
Ich hatte schon mal früher festgestellt, das es beim mySQLdb Modul einen Parameter use_unicode beim connect() gibt! Allerdings gibt es den erst ab einer bestimmten Version des Moduls...
Nun frage ich mich, ob ich nicht besser mit den obrigen SQL-Statements fahre...
Edit: So, jetzt weiß ich warum es mit "latin-1" klappt! Auszug aus "SHOW VARIABLES;"
Code: Alles auswählen
latin1 character_set_client
latin1 character_set_connection
utf8 character_set_database
latin1 character_set_results
latin1 character_set_server
utf8 character_set_system