Seite 1 von 1

UTF-8 / Unicode / MySQL / Bottle / Python / Apache öäüÖÄÜ

Verfasst: Montag 15. März 2010, 09:31
von MrNiceTry
Ja, richtig.
Du hast richtig vermutet.
UTF-8 Probleme!

Ich habe wirklich schon alles probiert was geht, was geschrieben worden ist, was sich Google zu UTF und Python rausquetscht.

Webseitig bekommt man nur das schwarze Stopschild mit dem Fragezeichen zu sehen.

In MySQL sind die Umlaute da.
In MySQL ist an allen möglichen Stellen, die ich aufspüren konnte "utf8_unicode_ci" eingetragen.

Mein Python Code "todo.py", der mit Bottle zusammen spielt hat in der ersetn Zeile "# -*- coding: utf-8 -*-".

Genau so das Template!
DefNull hat geantwortet, das es wohl nicht an Bottle liegen wird.

Auf der Webseite kommt dann nur noch "schwarz" an.
Im Seitenquelltext sind bereits keine Umlaute zu sehen.


Was mache ich falsch?
Wo muß ich noch nachsehen?
Gibt es einen anderen Lösungsweg als UTF-8 der sinnvoll ist?


MrNiceTry

Verfasst: Montag 15. März 2010, 09:36
von BlackJack
@MrNiceTry: Ich denke Du musst an jeder Stelle "auf dem Weg" schauen, ob die die Daten noch korrekt sind, und so die Stelle finden, wo das halt nicht mehr der Fall ist.

Re: UTF-8 / Unicode / MySQL / Bottle / Python / Apache öäüÖÄ

Verfasst: Montag 15. März 2010, 09:38
von Darii
MrNiceTry hat geschrieben:Was mache ich falsch?
Keine Ahnung, da gibts zu viele Unbekannte.
Wo muß ich noch nachsehen?
Du musst einfach systematisch nach dem Fehler suchen und Fehlerquellen aussortieren. Zum Beispiel würde ich als ersten gucken, was mit Umlauten passiert die du aus dem Script selbst an das Template übergibst. Wenn die Ankommen musst du dir nochmal genau den Mysql-Teil angucken, wenn nicht, dann den Rest. Und so stückweise zum Problem vorarbeiten.

Gibt es einen anderen Lösungsweg als UTF-8 der sinnvoll ist?[/quote]Nein, evtl. UTF-16 oder UTF-32. ;)[/quote]

Verfasst: Montag 15. März 2010, 10:23
von Käptn Haddock
Ich tippe auf ein falsches client_encoding beim Zugriff auf die Datenbank. Man sollte das auch bei MySQL beim Aufbau der Verbindung setzen können...

CU Uwe

Verfasst: Montag 15. März 2010, 10:42
von Defnull
Was passiert denn mit umlauten in Templates oder wenn du einfach einen Unicode String mit Umlauten zurück gibst? Wenn die richtig dargestellt werden, liegt es ja 100%ig an mysql.

Verfasst: Montag 15. März 2010, 15:49
von noisefloor
Hallo,

hast du das Problem mit Daten, die du aus Python _in_ die MySQL DB schreibst, oder mit Daten, die du händisch in DB schreibst und mit Python raus holst?

Ich hatte das Problem mal, weil alles auf UTF-8 eingesteltl war, nur meine Client-Connection -> MySQL auf Latin-1 stand. Das siehst du aber nur in der Config-Datei von MySQL.

Gruß, noisefloor

Verfasst: Montag 15. März 2010, 16:02
von Pekh
Das kann ich bestätigen. Bei MySQL-Verbindungen sollte das Encoding immer explizit mit angegeben werden. Sonst passieren hässliche Dinge.

Seinerzeit half es, nach Erstellen der Verbindung einen Cursor zu erstellen und den Befehl "SET NAMES 'UTF-8'" abzusetzen.

Verfasst: Montag 15. März 2010, 16:20
von jens
In den neueren Versionen von MySQLdb kann man beim connect das encoding angeben.
EDIT: wäre mal Zeit einen Eintrag in der http://wiki.python-forum.de/FAQ zu erstellen!

Verfasst: Montag 15. März 2010, 17:56
von ms4py
Hast du vielleicht IE und bottle 0.6.x?
Dann musst du den content-type (mit bottle) manuell auf utf-8 setzen.

Verfasst: Montag 15. März 2010, 18:15
von MrNiceTry
ms4py hat geschrieben:Hast du vielleicht IE und bottle 0.6.x?
Dann musst du den content-type (mit bottle) manuell auf utf-8 setzen.
nö,

kein IE !
Bottle 0.7er !

Verfasst: Dienstag 16. März 2010, 09:52
von MrNiceTry
Habe diese Nacht bei GitHub die neueste Version 0.8.0 von Bottle entdeckt.

Copy zum Server ... alle Umlautprobleme weg ! :idea: :lol: