• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP - DB auslesen in UTF8

Nein, nachträglich funktioniert das nicht mehr. Dafür müsstest Du ein Script schreiben, welches die Daten ausliest, zwischenspeichert, die Datenbank neu erstellt und die Daten mit neuem Zeichensatz umwandelt und einfügt - da ist das Neuerstellen schon einfacher, wenn es sich um eine überschaubare Anzahl Datensätze handelt.
 
Also, was hier passiert ist, dürfte klar sein: ISO-8859-1-Bytefolgen sind aus irgendeinem Grund in einer Spalte gelandet, die als UTF-8 ausgewiesen ist. (In den beiden Kodierungen sind beispielsweise Umlaute binär unterschiedlich repräsentiert.)

Es gibt übrigens Möglichkeiten in MySQL, die „binäre Kodierung“ unabhängig von der Collation umzuwandeln. Ich habe das irgendwann mal rausgesucht, finde es aber gerade nicht. Bei Bedarf bitte melden.

Aber wie das passiert ist, würde mich schon interessieren. Hat da zufällig jemand ein Szenario im Kopf? Ich bin leider nicht dazu gekommen, wirklich rumzuprobieren, glaube aber, dass MySQL beim Ändern der Collation clever genug ist, umzukodieren.
 
Nein, nachträglich funktioniert das nicht mehr. Dafür müsstest Du ein Script schreiben, welches die Daten ausliest, zwischenspeichert, die Datenbank neu erstellt und die Daten mit neuem Zeichensatz umwandelt und einfügt - da ist das Neuerstellen schon einfacher, wenn es sich um eine überschaubare Anzahl Datensätze handelt.

Ich habe jetzt die Datenbank neu erstellt. Gleich die Kollation auf utf8_general_ci gestellt und das Forum neu reininstalliert. Testbeitrag erstellt, auslesen lassen.

Es klappt immer noch nicht. Bei einem Direktaufruf der Datei, sagt mir Firefox jetzt allerdings auch utf-8! Und die Sonderzeichen werden jetzt auch hier durch � angezeigt.

Ich bin langsam am Ende :/.
 
Wie hast du denn den Testbeitrag erstellt? Über ein Formular oder im phpMyAdmin? Falls über ein Formular: Welches Charset hat das? Und auf welchem Charset steht dort die DB-Verbindung?
 
Also die Seite auf der das Formular ist, ist mit UTF-8 gekennzeichnet.

Das mit der DB-Verbindung keine Ahnung, so gut kenne ich mich dann doch nicht aus :).

Aber die Forensoftware die ich verwende ist xenForo.
 
Na ja, was soll man dazu noch groß sagen.

Du hast in einer Tabelle des Forensystems die Collation umgestellt (war vielleicht keine gute Idee, weil Third-Party-Ressource) und nun scheint das Forum die Daten nicht mehr korrekt einzutragen (siehe letzte Klammeranmerkung).

Das kannst du jetzt entweder zu reparieren versuchen (dazu müsstest du die im letzten Post aufgelisteten Informationen herausbekommen und gegebenenfalls anpassen) oder du suchst nach einer Lösung, die nicht in das Forensystem selbst eingreift, zum Beispiel, indem du die Daten ausliest und dann in PHP konvertierst.
 
Du hast in einer Tabelle des Forensystems die Collation umgestellt (war vielleicht keine gute Idee, weil Third-Party-Ressource) und nun scheint das Forum die Daten nicht mehr korrekt einzutragen (siehe letzte Klammeranmerkung).

Das habe ich doch gar nicht? Ich habe doch geschrieben, dass ich eine komplett neue Datenbank eröffnet habe. Die Collation von Latin auf utf8_general_ci umgestellt habe, und dann erst das Forensystem in die DB installieren lassen.

Da habe ich doch sonst nirgends eingegriffen?

Oder hätte ich ersteres nicht tun sollen? Könnte es da wohl Probleme geben, sofern ich ein backup von der db mache und sie versuchen würde in eine frische db zu importieren (ohne vorher die collation auf utf-8 umzustellen, das heißt standard Latin wäre aktiv)
 
Zurück
Oben