wordpress-php5-mysql5.jpg

nachdem wir unsere datenbank auf mysql5 aktualisiert haben wurden bei uns bei sämtlichen wordpress installationen auf dem server alle sonderzeichen und umlaute falsch angezeigt. das lag zum einen an der von mir noch nie so perfekt durchgezogenen umstellung auf uft-8 (ab wordpress version irgendwas wird standartmäßig UTF-8 anstelle der ISO-8859-1 benutzt).
ich hatte bisher immer die mühe gescheut mich mit dem thema kollationen, utf und iso schlagmichtot auseinander zu setzen. aber da jetzt auch webseiten von kunden betroffen waren, wurde es höchste zeit.

direkt wordpress themes runterladen

nachdem die datenbank von version 4 auf mysql 5 gebracht wurde, zeigte sich auf den wordpress blogs ein kritisches bild. alle umlaute und sonderzeichen wurden falsch dargestellt. das lag vor allem an der kollation der datenbank tabelle “latin1_swedish_ci”. leider bin ich mir nicht sicher ob sich durch das update der mysql datenbank die kollation geändert hat, aber fakt ist: vorher wurde alles korrekt angezeigt.

ich habe daher folgende schritte zur lösung durchgeführt:
ich setzte jetzt einfach voraus das ihr alle anderen einstellungen auf UFT-8 stehen habt. in der wp-config.php, als meta tag im template und in den wordpress einstellungen (einstellungen > lesen > “Zeichensatz für Seiten und Feeds”) kann man den zeichensatz einstellen. in meinem blog steht alles auf UFT-8. ich hatte erst daran gedacht den blog wieder zurück in das altbewährte ISO-8859-1 zu bringen. ich halte den internationalen utf-8 standart für zukünftige unternehmungen für sicherer.

mysql tabellen kollation ändern
als erstes habe ich die tabellen auf “latin1_german1_ci” gestellt. das kann man zum beispiel mit phpMyAdmin machen indem man sich die tabelle anzeigen läßt und dann auf “operationen” im oberen menu klickt. hier kann man relativ weit unten die kollation einstellen und mit dem OK knopf bestätigen. das fürt man für alle tabellen des wordpress blogs durch.

kollation-aendern.jpg

umlaute und sonderzeichen konvertieren
es gibt ein paar plugins und php scripte die diesen job erledigen sollten, aber leider hat dabei keins bei mir funktioniert. also habe ich die korrekturen per hand durch geführt. dazu kann man wieder mit phpMyAdmin arbeiten:
ihr seid natürlich in der richtigen datenbank eingeloggt. jetzt klickt ihr oben auf SQL (es spielt keine rolle welche tabelle ihr zuletzt ausgewählt habt) und löscht in dem feld “SQL-Befehl(e) in Datenbank *db name* ausführenDokumentation” den vorab eingetragenen befehl und führt folgenden aus:

update kzt_posts set post_content = replace( post_content,’ü’,'ü’);

phpmyadmin-sql.jpg

die variablen dazu sind einfach erklärt: kzt_posts ist die tabelle an der änderungen gemacht werden sollen und post_content das entsprechende textfeld. in anderen tabellen stehen die zu ändernden informationen natürlich in einem anderen textfeld. ihr werdet die namen dazu sicher sofrt erkennen wenn ihr euch die entsprechende tabelle anseht. am ende des befehls stehen die werte die gesucht und gegen welchen wert sie ausgetauscht werden sollen. eine entsprechende tabelle habe ich weiter unten angefügt.
klickt man auf OK, werden alle werte geändert und wir erhalten eine meldung wie oft der wert in der datenbank korrigiert wurde.

die folgenden umlaute können dabei in eurer datenbank vorkommen. je nachdem ob ihr schon mit SO-8859-1 gearbeitet habt, können da recht wilde sonderzeichenkombinationen herauskommen:

ü
ü
Ü
Ü
ä
ä
Ä
Ä
ö
ö
Ö
Ö
ß
ß
Ë
é

man könnte natürlich auch einen langen befehl in die SQL aufforderung schreiben, aber dann versteht ja wieder niemand was man dort macht ;-)

Tags: , , , , ,