Hm... Klar MySQLdb hat in der Vergangenheit einigen Mist gebaut zum Thema Encoding... Ich denke das beste ist es eine neue Version zu nutzten... Dennoch hab ich mir das ganze mal näher angesehen.
Ich glaube das Problem ist, das mysql_old zwar einige Anstrengungen unternimmt, die Fehler in alten MySQLdb Versionen auszugleichen, aber dennoch wurde das was übersehen.
Normalerweise soll IMHO das DB backend unicode zurück liefern. Das macht jedenfalls das normale "mysql" backend mit einer aktuellen MySQLdb Version.
Ich hab mal einen Patch geschrieben, damit auch das alte "mysql_old" backend Bytestrings in unicode zurück liefert:
http://paste.pocoo.org/show/4100/
Lokal bei mir funktioniert es. Auf dem Web-Server mit einem kleinen Test-Skript geht's auch.
Leider sind aber auch mit diesem Patch meine unicode Fehler nicht weg
Nun weiß ich gerade nicht, wo das Problem liegt, aber ich denke nicht, das es noch am DB Adapter liegt...
Du kannst es dir ja mal ansehen! Führe einfach mal eine Suche auf
http://www.jensdiemer.de/_command/1/search/do_search/ aus. z.B. nach "test"...
Das Problem ist hier:
File "./PyLucid/plugins_internal/search/search.py" in _search
138. score += content.count(term)
UnicodeDecodeError at /_command/1/search/do_search/
'ascii' codec can't decode byte 0xc3 in position 243: ordinal not in range(128)
Die Variablen:
Wobei u'\xdcber' auch richtig ist. Denn "\xdc" ist ja ein "Ü".
Ich frage mich warum bei content.count(term) denn überhaupt ein unicode Teil in einem String gewandelt werden soll. Lokal funktioniert das wunderbar.
Jemand einen Tipp???
EDIT: Ich sehe gerade zum mysql_old Problem gibt es auch ein Ticket:
http://code.djangoproject.com/ticket/4741
Dort hab ich mal meinen Patch dran gepackt...