Umlautproblem auf privatem Blog behoben
by torque on Apr..16, 2014, under Allgemein, Internet, WordPress
Heute habe ich mich mal um ein altes Problem meines Auf dem Weg – Blog gekümmert, der auf meiner HTML Seite klopsch.de in einem Frame eingebunden ist. Und zwar waren bei allen älteren Beiträgen die Umlaute zerschossen. Das ist mir schon früher aufgefallen, aber ich hatte nie den Antrieb dazu mich schlau zu machen, wie man das beheben kann. Das Problem ist im Internet sehr bekannt und entsteht in den meisten Fällen bei einem Serverumzug. Bei mir kam das aber irgendwann bei einem älteren WordPress Update mal zustande.
Zuerst habe ich MySQL-Dumper auf meinem Webspace hochgeladen und installiert. Damit habe ich erstmal alle meine Datenbanken gesichert. Danach bin ich ans Eingemachte gegangen und habe über das Interface von MySQL-Dumper folgende SQL-Befehle ausgeführt:
Umlaute im Text korrigieren:
UPDATE wp_posts SET post_content = replace(post_content, 'ü', 'ü');
UPDATE wp_posts SET post_content = replace(post_content, 'ö', 'ö');UPDATE wp_posts SET post_content = replace(post_content, 'ä', 'ä');
UPDATE wp_posts SET post_content = replace(post_content, 'ß', 'ß');
Umlaute im Post-Titel korrigieren:
UPDATE wp_posts SET post_title = replace(post_title, 'ü', 'ü');
UPDATE wp_posts SET post_title = replace(post_title, 'ö', 'ö');
UPDATE wp_posts SET post_title = replace(post_title, 'ä', 'ä');
UPDATE wp_posts SET post_title = replace(post_title, 'ß', 'ß');
Umlaute in Kommentaren korrigieren
UPDATE wp_comments SET comment_content = replace(comment_content, 'ü', 'ü');
UPDATE wp_comments SET comment_content = replace(comment_content, 'ö', 'ö');
UPDATE wp_comments SET comment_content = replace(comment_content, 'ä', 'ä');
UPDATE wp_comments SET comment_content = replace(comment_content, 'ß', 'ß');
Umlaute im Titel der Kommentare korrigieren
UPDATE wp_comments SET comment_author = replace(comment_author, 'ü', 'ü');
UPDATE wp_comments SET comment_author = replace(comment_author, 'ö', 'ö');
UPDATE wp_comments SET comment_author = replace(comment_author, 'ä', 'ä');
UPDATE wp_comments SET comment_author = replace(comment_author, 'ß', 'ß');
Dann hab ich das alles nochmal für die Großbuchstaben mit folgenden Änderungen der obigen Code Snippets gemacht: (Ãœ -> Ü
), (Ö -> Ö
) und (Ä -> Ä
)
Bindestriche korrigieren:
UPDATE wp_posts SET post_content = replace(post_content, '–', '–');
UPDATE wp_posts SET post_title = replace(post_title, '–', '–');
Und tatsächlich, es hat geklappt! Alle zerschossenen Umlaute wurden wieder richtig dargestellt. Gut, es war zwar alles viel Arbeit. Aber es hat sich gelohnt. Endlich ist dieses alte Problem behoben. *freu*
Bildquelle: Wikipedia / Das Original wurde von LSDSL erstellt (modifiziert von mir)
April 16th, 2014 on 10:08
Dann setz jetzt aber auch die Datenbankverbindung auf UTF-8 – sonst bekommst Du doch die selben Probleme wieder?!
April 16th, 2014 on 10:19
Du hast recht, das sollte ich machen. Hab davon gelesen, wusste aber nicht wo ich das einstellen kann. Hast du ein Tipp für mich, wo ich das ändern kann ?
April 16th, 2014 on 10:46
In meiner wp-config.php steht bereits folgendes drin:
define('DB_CHARSET', 'utf8');
In der MySQL-Datenbank steht unter Allgemeine Einstellungen: Zeichensatz/Kollation der MySQL-Verbindung “utf8mb4_general_ci”… Muss ich noch was anderes beachten oder umstellen ?April 18th, 2014 on 14:49
Normalerweilse sollte die Collation auf utf8_general_ci stehen – in wie weit sich diese von utf8mb4_general_ci unterscheidet, kann ich gerade nicht sagen.
Das mit dem Default Charset ist jedenfalls schon einmal der richtige Schritt. Am besten Du schaust mal mit einem Client in deine DB, ob die Zeichen dort auch richtig ankommen (ö, ä, ü, ß, …).
Im zweiten Schritt kannst Du dann prüfen, ob diese auch richtig wieder ausgelesen werden und auf der Seite richtig angezeigt werden.
Klingt aber erstmal korrekt soweit.