WordPress, UTF-8, Backups und diese Schmerzen
Aufmerksamen Lesern ist es vielleicht aufgefallen: Vor ein paar Monaten habe ich es geschafft die Umlaute aller Kommentare vor dem 27. August 2007 zu verstümmeln. Die Ursache: Ich. Der Grund: Das Plugin UTF-8 Database Converter. Der Hintergrund: Das Update auf WordPress 2.2 führte in der Konfigurationsdatei einen Parameter ein, mit dem alle Daten konsequent mit UTF-8 enkodiert werden. Ältere WP-Installationen stellten ab dann Umlaute falsch dar, weil die Datenbankfelder damals nicht als UTF-8-Felder angelegt wurden. Die schnelle Lösung: Besagten Parameter nicht verwenden.
So weit, so gut. Allerdings wollte ich meine WP-Installation doch durchgehend auf UTF-8 umstellen, der einzig mir bekannte Weg war mir aber zu umständlich. Dann hat mich Richard auf besagtes Plugin aufmerksam gemacht, dass diese Arbeit mit einem einzigen Klick erledigt. Natürlich muss man bei solchen Tools, die direkt auf der Datenbank operieren vorsichtig sein – und das war ich leider nicht. Das Plugin funktionierte bei Artikeln wunderbar, bei Kommentaren nicht. Der Autor des Plugins war sehr bemüht und antwortete auch sofort auf meine Anfrage, leider blieb das Problem bestehen.
Als alle weiteren Versuche, den Fehler zu beseitigen fehlschlugen, wollte ich mein zuvor angelegtes Backup wiederherstellen. Leider musste ich feststellen, dass auch dort alle Umlaute falsch gespeichert wurden – warum weiss ich nicht. Die Fehldarstellung wich auch leicht von jener der Kommentare ab: Während letztere meist mit einem à (z.B. ü statt ü) begannen, führten jene im SQL-File eine Wurzel (z.B. √º statt ü) als erstes Zeichen. Ja ja, die wunderbare Welt falsch codierter Sonderzeichen aus der Sicht des UTF-8-Zeichensatzes.
Die Lösung
Wenn ich im WordPress-Config-File den UTF-8-Parameter leer gelassen habe, wurden die Sonderzeichen in den Kommentaren richtig dargestellt, jene in den Artikeln nicht mehr. Hier trat übrigens eine dritte Art der Fehldarstellung auf: Statt der zuvor erwähnten kryptischen Doppelzeichen ersetzte ein einfaches Fragezeichen (in manchen Mac-Editoren als hübsches � dargestellt) die Sonderzeichen. Ich verstehe das bis heute nicht, aber zumindest war es auf amüsante Art und Weise interessant.
Heute habe ich mich endlich dazu durchgerungen und ein einfaches PHP-Skript geschrieben, dass die betroffenen Kommentare richtig ausgibt (und zwar gleich in einer passenden Insert-Anweisung für MySQL). Diese habe ich dann via PHPMyAdmin in die Datenbank eingefügt. Da meine Programmierfähigkeiten etwas eingerostet waren, hab ich dabei glatt vergessen, das einfache Anführungszeichen zu »escapen«. Die Original-Kommentare (1803 Stück) in der Datenbank hatte ich aber bereits gelöscht, also war manuelles Ausbessern angesagt. Wie auch immer, jetzt sollten alle Kommentare wieder vollständig vorhanden sein. Mit dem Update auf WordPress 2.3.1 warte ich aber lieber bis nächstes Wochenende …
Neueste Artikel
- Apple stellt iPod ein – meine Modelle und was am iPod eigentlich gar nicht so gut war
- Star Trek: Strange New Worlds – Start in Deutschland »bis Ende 2022«, Österreich-Start weiterhin unklar
- Star Trek: Strange New Worlds (nicht) auf Amazon Prime – erscheint die Serie noch zeitnah zur US-Premiere?
- Alle (806) →
5 Kommentare
Kommentieren
Dieser Eintrag kann nicht mehr kommentiert werden.
[…] Seit der Version 2.13 werden alle Buchstaben in UTF-8 enkodiert, soll heißen ältere WP-Installationen stellten ab dann Umlaute falsch dar, weil die Datenbankfelder damals nicht als UTF-8-Felder angelegt wurden. (read this) […]
[…] http://bensite.net/archive/2007/11/11/wordpress-utf-8-backups-und-diese-schmerzen/ Dieser Beitrag wurde geschrieben von admin am 7. August 2008 at 19:36 und gespeichert unter News, […]
Wow, das gibt’s nicht… mir ist vor ein paar Wochen *exakt das gleich* passiert, hab dann schlussendlich die DB händisch mit Search+Replace repariert; das war aber höllisch mühsam 🙂
Search+Replace?! Wow. Das hatte ich mir aus Verzweiflung auch kurz überlegt, bis ich mal durchgegangen bin, welche Zeichen ich da alle ersetzen hätte müssen – geht ja nicht nur um Umlaute, sondern auch korrekte Anführungszeichen, Sonderzeichen aus anderen Sprachen usw. Das wäre mir dann zu unsicher gewesen, weil ich mir nie sicher gewesen wäre, alle »erwischt« zu haben.
Andererseits war mein Ansatz auch nicht unbedingt zeiteffizient. Ich hoffe echt, dass die Encoding-Sache bei WordPress damit ein für alle Mal erledigt ist … 😉
[…] http://bensite.net/archive/2007/11/11/wordpress-utf-8-backups-und-diese-schmerzen/ […]