UTF-8 zu Latin-1 konvertieren (MySQL)
suit
- datenbank
MySQL 5.0.77 produziert bei mir folgendes.
SELECT [link:http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html@title=CONVERT](_latin1'ä' USING utf8) as foo
Erwartet: ä
Ergebnis: ä
SELECT CONVERT(_utf8'ä' USING latin1) as foo
Erwartet: ä
Ergebnis: ä
Ich hab' in der Datenbank falsch codierte Inhalte und möchte diese "richtig" auslesen, aber meine Versuche scheitern wie obiges Beispiel mit dem statischen String zeigt. Doppelt falsch funktioniert, damit kann ich aber nichts anfangen ;)
Bug, Feature, Denkfehler? ;)
Hi!
MySQL 5.0.77 produziert bei mir folgendes.
MySQL oder MySQL in Zusammenarbeit mit dem phpMyAdmin? Denn mit dem Kommandozeilen-Client kann ich das Verhalten so nicht nachvollziehen.
SELECT [link:http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html@title=CONVERT](_latin1'ä' USING utf8) as foo
Erwartet: ä
Ergebnis: ä
Bei mir hat der PMA das ä als 4 Bytes gesendet, sagt der Hexdump vom Query-Log. Daraus entstehen 8 UTF8-Bytes, die beim Abfragen der Ergebnismenge wieder als 4 Zeichen angezeigt werden. Du lässt dich durch das angezeigte täuschen.
SELECT CONVERT(_utf8'ä' USING latin1) as foo
Erwartet: ä
Ergebnis: ä
Auch hier wieder 4 Byte, die nach Latin1 konvertiert 2 Zeichen ergeben.
Ich hab' in der Datenbank falsch codierte Inhalte und möchte diese "richtig" auslesen, aber meine Versuche scheitern wie obiges Beispiel mit dem statischen String zeigt. Doppelt falsch funktioniert, damit kann ich aber nichts anfangen ;)
Versuch das lieber mit einer Kopie der Daten anstatt einen Test über mehrere Systeme und Schnittstellen zu fahren. Alternativ geht auch ein Dump, und den mit einem Hexeditor zu kontrollieren, welche Kodierung ttatsächlich vorliegt, und den dann _unter_Nennung_der_Kodierung_ zu importieren.
Lo!
MySQL oder MySQL in Zusammenarbeit mit dem phpMyAdmin? Denn mit dem Kommandozeilen-Client kann ich das Verhalten so nicht nachvollziehen.
Ich Arbeite hier mit dem MySQL Query Browser (1.2.17).
Alternativ geht auch ein Dump, und den mit einem Hexeditor zu kontrollieren, welche Kodierung ttatsächlich vorliegt, und den dann _unter_Nennung_der_Kodierung_ zu importieren.
Das ist wohl das beste ;) aber bei der Gelegenheit kann dich das Zeug geleich ordentlich in die Datenbank schreiben :D
Hello,
SELECT CONVERT(_utf8'ä' USING latin1) as foo
Erwartet: ä
Ergebnis: ä
Wie und womit hast Du denn das 'ä' eingegeben? Das musst Du dann ja in der passenden Codierung eingeben, also der Editor muss es auch als Latin-1-Darstellung der UTF-8-Sequenz verstehen. Wenn er es bereits als zwei in UTF-8 codierte Zeichen versteht, kann es ja nicht passen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Wie und womit hast Du denn das 'ä' eingegeben?
Direkt aus dem Texteditor in der absichtlich falschen Darstellung ;)
Das musst Du dann ja in der passenden Codierung eingeben, also der Editor muss es auch als Latin-1-Darstellung der UTF-8-Sequenz verstehen. Wenn er es bereits als zwei in UTF-8 codierte Zeichen versteht, kann es ja nicht passen.
Richtig.