
Zitat von
Tamara-Jasmin
Dachte das ganze ist wesentlich einfacher und eher kein grosses Problem.
Ganz und gar nicht.
Das größte Problem (welches an dutzenden, bei Add-ons auch unbekannten) Stellen auftritt sind serialisierte Daten.
Stell dir mal folgendes Latin1 Script vor:
PHP-Code:
<?php
$str = 'äöü';
$array = ['foo' => $str];
echo(serialize($array));
$array = ['foo' => utf8_encode($str)];
echo(serialize($array));
?>
Das erzeugt (Latin1) folgende Ausgabe:
Code:
a:1:{s:3:"foo";s:3:"äöü";}a:1:{s:3:"foo";s:6:"äöü";}
Nun steht in einem Latin1 vB der erste String
Code:
a:1:{s:3:"foo";s:3:"äöü";}
irgendwo in der DB, evtl. in einem normalen Text-Feld (VARCHAR, MEDIUMTEXT, etc.) oder in einem BLOB/VARBINARY.
Wenn Du ein Text-Feld einfach konvertierst ist das Array anschließend kaputt (du hast 2-Byte-Zeichen für äöü aber die Längenangabe ist immer noch 3 Byte), ist es ein BLOB ist das Array danach zwar noch intakt, die enthaltenen Daten aber noch immer Latin1 - geht also auch schief.
Du brauchst also ein Script welches exakt die verwendeten Datenstrukturen kennt und diese serialisieren Datenstrukturen (rekursiv) konvertiert, denn auf Gut Glück mal alles was wie ein serialisiertes Array (oder noch schlimmer: ein Objekt, auch das kommt vor) aussieht versuchen zu konvertieren wird auch schiefgehen.
Ein solches Script gibt es nicht, es müsste spezifisch für die jeweilige Version sein - von Add-ons ganz zu schweigen.
Machbar ist das natürlich (wenn du nur Latin1 in der DB hast ... wenn nicht wird es richtig lustig), aber echt Arbeit.
Lesezeichen