PHP Portal » PHP Forum » Entwicklung » MySQL, PostgreSQL und SQL-konforme Datenbanken » Datenbank von Latin-1 zu UTF8 konvertieren.

[MySQL] Datenbank von Latin-1 zu UTF8 konvertieren. 

von
Member
Zitat
Hi zusammen,

ich habe hier noch eine "alte" Datenbank, welche ich gerne von Latin1 auf UTF-8 umstellen will. Gleichzeitig soll ein Wechsel von MyISAM auf INNO-DB erfolgen. Letzteres ist aber sekundär.

Nur zur Konvertierung ...

Normalerweise wird MySQL nur mitgeteilt, dass die Datenbank UTF8 konform arbeiten soll. Das gleiche entsprechend auch mit den Tabellen und den Text/String-Feldern.

Für die Verbindung wird UTF8 definiert. Standard bisher: Latin-1

Die Ausgabe an den Browser wird auf UTF8 umgestellt.

So funktioniert es "normalerweise". oder?

Nun mein spezieller Fall:

Das Projekt ist schon was älter. Sehr viel älter. Die Datenbank ist immer noch MyISAM-Latin-1.

Allerdings war das Projekt schon auf Mehrsprachigkeit bzgl der Eingaben ausgelegt. D.h. der Browser schiebt UTF8 raus und nimmt diese an.

Ein Eintrag in einem Textfeld war also bereits UTF-8 konform.

Nun das entscheidende .. Die Daten wurden 1:1 als UTF8 in die Latin-1 Datenbank geschrieben. Soweit ja kein Problem. Ausser, dass die doppelte Menge Speicherplatz verbraucht wurde.

Wenn ich nun aber die standardisierte Form der Konvertierung der DB von Latin-1 auf UTF8 anwende, zerreißt es ja dennoch die angelegten Daten. Denn jedes Zeichen wird von Latin-1 auf UTF8 konvertiert. Aber es sind 2-Byte-Zeichen (UTF8 Daten in Latin-1 Tabelle) bereits enthalten. Hier wird daher das 1. und das 2. Byte getrennt konvertiert und entsprechend sind die Daten zerrissen.

Hat jemand hierzu eine ideale Lösung?

Gruß
Haxe

Werbung

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
the Boss
Zitat
sowas mache ich so:

  • per mysqldump exportieren
  • die SQL Datei mit "iconv -f iso-8859-15 -t utf8 ..." nach utf8 konvertieren
  • in der Datei bei der Tabellendefinition das Charset ersetzen
  • datei in eine neue utf8 Datenbank importieren

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
Member
Zitat
Es sind aber UTF8 Zeichen bereits gespeichert worden. Ich werde das mal testen.

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
the Boss
Zitat
beim Export zusemmelt er dir die aber, deshalb nochmal konvertieren

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
Member
Zitat
Leider hat es nichts gebracht. Die Daten sind weiterhin unbrauchbar ... Vermutlich bleibt mit nichts anderes übrig als ein spezielles Export->Import Script zu erstellen.

Es muss ja berücksichtigt werden, dass UTF8 Daten in einer Latin-1 mit Latin-1-Connect stecken. Ich glaube das die bisherigen Versuche nur im Standard-Fall klappen.

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
the Boss
Zitat
wie sehen die Exporte per mysqldump aus?
eventuell musste from:utf nach:iso kodieren,
damit die Umlaute im dump korrekt sind.

Sind sie dort korrekt, kannste sie in ein utf-8 DB importieren

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
Member
Zitat
Ich werde das morgen weiter checken ...

Re: Datenbank von Latin-1 zu UTF8 konvertieren. 

von
Member
Zitat
Ich werde wohl doch ein extra-Export/Import-Script erstellen. Das erscheint mit aktuell als die beste Lösung.

Schnellantwort

ähnliche Themen

Datenbank füllen