Seite 1 von 1

MySQL 4.1.8 und UTF8...

Verfasst: Donnerstag 30. Juni 2005, 19:22
von jens
Habe auf Hosteurope nun einen MySQL 4.1.8a-Debian_5.dotdeb.0-log Server... Jetzt sind allerdings meine Umlaute defekt, z.B.: http://jensdiemer.de/?PyLucid

Alle Umlaute/Sinderzeichen sind ersetzt durch Fragezeichen :(

Ich habe mit phpMyAdmin alles auf DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci umgestellt. In phpMyAdmin sind die Umlaute auch richtig...

Es gibt wohl beim mySQLdb Modul beim connect() eine Angabe unicode bzw. use_unicode. Aber leider habe ich die Uralte Version von MySQLdb ( v0.9.1 )

Hier mal eine Ausgabe:
das ü
D\xc3\xbcsseldorf - Mein lokaler Server (Umlaute richtig)
D\xfcsseldorf - Der Hosteurope Server mit falschen Umlauten

ein ö
K\xc3\xb6rper - mein Server
K\xf6rper - Hosteurope

Weiß jemand was da schief läuft???

Verfasst: Donnerstag 30. Juni 2005, 20:25
von Gast
Hallo jens,
hatte das selbe Problem, obwohl ich im header und meta tag UTF-8 als Zeichensatz hatte.

Bei mir hat's geholfen einfach die Daten zu löschen, und neu in die Tabelle zu schreiben bzw. die Tabelle neu anlegen.

Anscheinden wandelt MySQL alte Datensätze nicht einfach um?
Ist dein Python Script auch UTF-8 codiert und hast Du es oben im Script auch angegeben?

MfG
Andreas

Verfasst: Donnerstag 30. Juni 2005, 20:49
von jens
Du hast recht, irgendwie liegt's am SQL-Dump :evil:

Verfasst: Donnerstag 30. Juni 2005, 21:13
von jens
Verdammt... Ich habe nun einen UFT8 SQL-Dump... in Scite sind alle Umlaute richtig. Alle Felder und die Tabelle an sich sind in CHARSET=utf8 COLLATE=utf8_unicode_ci

Auch wenn ich diesen Dump einspiele sind die Umlaute nicht richtig. In phpMyAdmin aber schon. :twisted:

Wenn ich nun per lucidCMS (also per PHP) Daten einfüge, werden sie richtig Dargestellt, aber in phpMyAdmin wird aus äöüÄÖÜß -> äöüÄÖÜß

Irgendwie verstehe ich das ganze nicht wirklich :cry:

Verfasst: Donnerstag 30. Juni 2005, 21:21
von jens
Aha, eine Lösung hab ich nun... Ich stelle von utf8_unicode_ci auf binary... Aber das ist, denke ich, nicht gerade die richtige Lösung, oder???

Re: MySQL 4.1.8 und UTF8...

Verfasst: Donnerstag 30. Juni 2005, 21:25
von BlackJack
jens hat geschrieben:Hier mal eine Ausgabe:
das ü
D\xc3\xbcsseldorf - Mein lokaler Server (Umlaute richtig)
D\xfcsseldorf - Der Hosteurope Server mit falschen Umlauten

ein ö
K\xc3\xb6rper - mein Server
K\xf6rper - Hosteurope

Weiß jemand was da schief läuft???
Das auf dem Server scheint 'latin-1' bzw. 'iso-8859-1' zu sein. Wie ist es denn in die Datenbank hereingekommen? Waren die Daten schon vor der Umstellung drin?

Verfasst: Samstag 2. Juli 2005, 11:52
von jens
Jetzt hab ich mal auf meinem lokalen Test-Server ebenfalls eine neue Version von SQL (v4.1.10a-Debian_2ubuntu0.1-log) draufgepackt.
Und auch da ist es so, das ich alles auf UTF8 umgestellt hab. Alle Daten nochmal per SQL-Dump eingespielt... In phpMyAdmin ist wieder alles OK, aber per mySQLdb ist wieder Asche mit den Sonderzeichen :(

Komischerweise funktioniert mein Workaround nicht. Denn wenn ich die Daten auf Binary stelle, erhalte ich keinen String (wie bei Hosteurpe) mehr zurück sondern ein array.array-Objekt :( Ich denke es liegt an der neueren Version vom mySQLdb Modul...

Aber irgendwie muß das doch auch richtig gehen :cry: Ich möchte eigentlich schon mit UTF8 die Seiten speichern und zum Browser ausgeben... Ich habe keine Lust alle Sonderzeichen zu escapen...

Re: MySQL 4.1.8 und UTF8...

Verfasst: Samstag 2. Juli 2005, 11:58
von jens
BlackJack hat geschrieben:
jens hat geschrieben:D\xc3\xbcsseldorf - Mein lokaler Server (Umlaute richtig)
D\xfcsseldorf - Der Hosteurope Server mit falschen Umlauten
Das auf dem Server scheint 'latin-1' bzw. 'iso-8859-1' zu sein. Wie ist es denn in die Datenbank hereingekommen? Waren die Daten schon vor der Umstellung drin?
Ich bin etwas verwirrt:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: UTF-8 -*-

TestString = "ä ö ü ß Ä Ö Ü"
print TestString
print TestString.encode("String_Escape")
Ergebnis:

Code: Alles auswählen

ä ö ü ß Ä Ö Ü
\xe4 \xf6 \xfc \xdf \xc4 \xd6 \xdc
Somit ist ein kleines ü also \xfc
Demnach liefert der Server mit doch wirklich UFT8???

EDIT1:
AHA! Wenn ich die Seite mit Python's urllib2 abhole, sind die Umlaute drin! Setzt Der Browser also die Umlaute falsch um?
Ich habe allerdings

Code: Alles auswählen

<meta http-equiv="Content-Type"        content="text/html; charset=utf-8" />
drin. Das hatte vor der Serverumstellung auch prima geklappt :?
In Firefox sehe ich in den Seiteninformationen allerdings das die Kodierung UTF8 ist :?:

EDIT2:
Also jetzt bin ich ja total verwirrt... Im IE werden die Umlaute auch falsch angezeigt. Wenn ich allerding mit den Quellentext der HTML-Seite anschaue, sind alle Umlaute richtig drin :shock: Wie kann das denn sein? :idea:
Zum test hab ich den angezeigten Quellentext mal per Copy&Paste in einer lokalen HTML-Datei gespeichert (mit SciTE in UTF8). Die Datei zeigt mit Firefox dann auch richtig an :!:

Verfasst: Samstag 2. Juli 2005, 12:14
von jens
So! Jetzt habe ich auf meine Homepage www.jensdiemer.de auch wieder alles umgestellt auf UTF8...

Kann vielleicht mal einer von euch dorch drauf schauen, ob die Umlaute richtig sind???

Per urllib2 sind sie defekt. Im IE auch, aber nicht im IE-Quellentext...

Verfasst: Samstag 2. Juli 2005, 12:21
von piddon
Also ich bekomme im Firefox ein ? für jeden Umlaut. Wenn ich aber unter "Ansicht->Zeichencodierung" auf Westlich Iso 8859-1 stelle sehe ich alle umalute richtig.

Verfasst: Samstag 2. Juli 2005, 12:31
von jens
Ja, ich glaube meine vermutung das ü ein \xfc in UTF8 ist, war falsch.... In SciTE habe ich da oft Probleme mit.
Ich denke ü ist \xc3\xbc in UTF8... Scheint mir auch richtiger zu sein, da es sich aus "zwei Zeichen" zusammen setzt...

Dann verstehe ich allerdings nicht, wie ich wirklich UTF8 in die SQL-Datenbank bekomme...

Verfasst: Samstag 2. Juli 2005, 12:33
von tabellar
Hi Jens,

bei mir ist es gleich wie bei Piddon. Firefox startet Deine Seite mit UTF8 Zeichencodierung, sprich ? für Umlaute. Schalte ich die Zeichencodierung auf Westl. ISO-8859-1, sind alle Umlaute richtig dargestellt.

Tabellar

Verfasst: Samstag 2. Juli 2005, 12:49
von jens
Danke für eure Tests...

Hab mittlerweile herrausgefunden, das die Editierfunktion von phpMyAdmin mist baut. Wenn ich damit ein Feld editiere, benutzt er wohl nicht UTF8 sondern latin-1.
Mit meiner eigenen Editierfunktion in PyLucid werden die Umlaute allerdings richtig in UTF-8 in die Datenbank gespeichert...

Auf meiner Startseite habe ich nun einen Umlaut test mit PyLucid eingefügt, diese Umlaute sind dann auch richtig...

Also kann ich keine UFT8-Daten per SQL-Dump und phpMyAdmin in die Datenbank einfügen, ohne das phpMyAdmin mist baut :(

Jetzt kann ich natürlich mit PyLucid hingehen und alle meine Umlaute korrigieren, aber das macht nicht wirklich Spaß :cry:

Verfasst: Samstag 2. Juli 2005, 15:44
von jens
Ich bekomme es mit dem SQL Dump hin oder her, einfach nicht hin :(

Also schreibe ich mir jetzt einen "converter" in Python... Aber so leicht erscheint mir das auch nicht:
http://www.python-forum.de/viewtopic.php?p=20635#20635