MySQL 4.1.8 und UTF8...

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du hast recht, irgendwie liegt's am SQL-Dump :evil:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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 :!:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

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.
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten