freakydog: Kaputte Sonderzeichen in Django

Kaputte Sonderzeichen in Django

Zur Verwaltung dieser Seite setze ich das Python-Framwork django ein welches ich etwa wöchentlich direkt via SVN aus dem Trunk ziehe. (Wenn du bis jetzt nichts verstanden hast, wird dich der Rest auch nicht interessieren. Smiley:  ;-)

Diese Woche wurde in Django ein schon lange heiß diskutierter Patch zur Steigerung der MySQL-Performance eingespielt welcher bei mir arge Probleme mit den Sonderzeichen verursachte. (siehe Bild) Genau genommen waren die Sonderzeichen weder UTF-8 codiert (so wie sie original in der Datenbank stehen) noch Westeuropäisch.

Die Lösung war simpel, wenn auch nicht einfach zu finden. In die Settings-Datei muss man eine neue Zeile mit speziellen Einstellungen für die Datenbank einfügen, so dass die Daten aus MySQL auch wirklich als UTF-8 angesehen werden.

1
DATABASE_OPTIONS = dict(charset="utf8")

Das reichte bei mir schon aus. Das Problem tritt übrigens nur in speziellen Konstellationen zwischen Django, MySQLDB und bestimmen MySQL-Kollationen auf.

Update

Mittlerweile wurde ein Patch eingespielt der es auch erlaubt, die "alte" MySQL-API zu nutzen. Dazu muss in der settings.py die Zeile so geändert werden:

1
2
DATABASE_ENGINE = 'mysql' # Zur Nutzung der "alten" Api:
DATABASE_ENGINE = 'mysql_old'

So läuft Django bei mir (Python 2.3, MySQL 5.032) problemlos und die sporadisch auftrende Fehlermeldung "Warning: data truncated" im Admin-Bereich ist auch verschwunden.

Geschrieben am: 19. März 2007 um 11:59 Uhr, Abgelegt in Django & Python

Kommentare zu diesem Artikel (0):

Kommentar schreiben

Kommentar hinzufügen

Neue Kommentare sind nur noch über diese Seite möglich.