Stefan Meretz
Wed, 15 Nov 2006 07:44:43 -0800
On 2006-11-15 14:48, Thomas Kalka wrote: > Glückwünsch ! :-)
> Erwäge nun, auch unter Python statt PHP weiterzumachen, > lese gerade die Docs zu Turbogears, Mochikit etc etc. > SqlAlchemy scheint sehr brauchbar zu sein. Das wäre prima, dann könnten wir uns gut austauschen. SQLAlchemy ist definitiv sehr gut. > Zu dem Problem mit der Kodierung: > es sieht so aus, als ob UTF-8 nochmal nach UTF-8 kodiert würde. > Kommen die Texte so schon aus der Datenbank, oder macht der Webserver > noch mal eine Konvertierung ? Der Webserver ist neutral. Es sieht merkwürdig aus und scheint mit der DBAPI MySQLdb zu tun zu haben. Eine ausführliche Beschreibung habe ich an die TurboGears-Liste gepostet, ist leider noch nicht im Web zum referenzieren. Daraus dieses Snippet: 1st machine: Select from tg-admin: >>> from model import * >>> t = Testtable.selectone() >>> t.test u'xf6xf6xf6xf6' >>> print t.test öööö 2nd machine: Select from tg-admin (don't know, why looks different): In [1]: from model import * In [2]: t = Testtable.selectone() In [3]: t.test Out[3]: u'xc3xb6xc3xb6xc3xb6xc3xb6' In [4]: print t.test öööö Viermal ö deswegen, weil es in der Liste hieß, dass MySQL in einem varchar(4)-Feld bei einem Unicode-String nur zwei Zeichen speichern würde, weil "Unicode" das in zwei Byte darstellt. Also auf jeden Fall speichert MySQL öööö in einem varchar(4) Feld - utf8 ist doch ein "Einbyte-Encoding", oder? Und utf16 ein "Zweibyte-Encoding". Die Ausgabe der 1st machine liefert auf meinem Laptop eine perfekte Darstellung, die Ausgabe der 2nd Maschine liefert das, was ihr im Web seht. Das erste sieht aus wie utf8-encodiert, das zweite wie utf16. Weil: eine doppelte Kodierung - was soll das sein? utfx ist ja kein Zeichensatz, sondern nur ein Interpretationsschema. Aber ich gebe zu, dass ich das nicht so ganz blicke. Auf jeden Fall ist die Python-Console so nett, beide Stringrepräsentationen gleich zu interpretieren. Nur in der Webseite passt es nicht mehr, weil die ja eindeutig utf8 ist. In der TG-Liste merkern viele über MySQL: Keine Datenbank würde solche Encoding-Probleme machen wie MySQL. Ciao, Stefan -- Start here: www.meretz.de