Top

Kodierung für Umlaute und Sonderzeichen nach WordPress 2.6 Update defekt! Was tun?

Juli 18, 2008 by  

Kodierungsfehler wegen wp-config.php
Kürzlich habe ich Blogupdates auf WordPress 2.6 durchgeführt. Zuvor wurden die Dateien und die Datenbank natürlich gesichert. Nun musste ich aber feststellen, dass ein Blog auf einmal eine merkwürdige Zeichenkodierung aufwies.

Umlaute und Sonderzeichen wurden auf ein mal nicht mehr korrekt dargestellt, wie dieses Bild hier zeigt.

Umlaute wp-config falsch dargstellt

Ich habe aber genau die gleichen Files, z.B. auch für Blogmillionaer.de genutzt, und der Effekt ist hier nicht aufgetreten. Also hab ich mich auf die Suche nach der Ursache des Problems gemacht. Die größte Befürchtung war natürlich, dass es beim Update der Datenbank, zu einem Fehler gekommen ist. Glücklicherweise war dies nicht der Fall.

Haben andere auch das Problem?

Klar, wenn sowas passiert, sollte man erst mal kurz eine Suchmaschine bemühen, um zu sehen, ob auch andere das gleiche Problem haben und ob es schon Lösungsansätze gibt. Recht schnell, bin ich auf einen Artikel bei tiliaone.de (the Listx blog) gestoßen.

Dort gab es wohl das gleiche Problem. Der erste Lösungsvorschlag:

Die deutsche Version des Suchen und Ersetzen Plugins um jeden Umlaut manuell, für alle Beiträge, zu ersetzen.

Zwar eine Möglichkeit, aber da ich ein fauler Blogger bin 😉 und nicht jeden Umlaut und jedes Sonderzeichen, wie z.B. das recht häufig verwendete “Anführungszeichen” einzeln ersetzen wollte, habe ich mich auf die Suche nach der eigentlichen Ursache des Problems gemacht.

WordPress Kodierung – Was soll das ganze?

Erst mal muss man wissen, dass die Kodierung bei WordPress erst seit Version 2.2 definiert wird. So kann jeder Blogger in der Sprache seiner Wahl schreiben. Für einen großen Teil, sollte allerdings die utf8 Kodierung die richtige Wahl sein, und sollte auch nicht geändert werden.

wp-config.php – Wer aktualisiert, wird bestraft

Jedes WordPress WordPress Update, bei dem das komplette Archiv der neuen Version auf den Server gezogen wird, überschreibt jede Datei…

Außer eine: wp-config.php

Denn diese enthält wichtige Informationen wie Benutzername und Passwort der Datenbank. Dafür wird die Datei wp-config-sample.php hochgeladen. Im Laufe der Monate und Jahre haben sich aber wichtige Änderungen in dieser Datei ergeben, auf die ich teilweise noch in einem späteren Blogpost bezüglich WordPress Sicherheit eingehe.

Unter anderem wurden auch die Zeilen

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

hinzugefügt.

Diese zwei Einträge waren vor der Version 2.2 noch nicht vorhanden und sollten auch nicht bei einem Update der config.php hinzugefügt werden!

Schließlich bin ich auch noch auf einen offiziellen WordPress Hinweis aufmerksam geworden

Warning for those performing upgrades: If DB_CHARSET and DB_COLLATE do not exist in your wp-config.php file, DO NOT add either definition to your wp-config.php file unless you read and understand Converting Database Character Sets. Adding DB_CHARSET and DB_COLLATE to the wp-config.php file, for an existing blog, can cause problems — as Ryan Boren says, „your queries will go boom!“

Frei übersetzt:

Warnung an diejenigen, die Upgrades durchführen: Wenn DB_CHARSET und DB_COLLATE nicht in deiner wp-config.php Datei existieren, füge diese Definitionen NICHT zu deiner wp-config.php Datei hinzu, außer du liest und verstehst “Converting Database Character Sets”. Das Hinzufügen von DB_CHARSET und DB_COLLATE bei einem bereits bestehenden Blog in der wp-config.php kann Probleme verursachen, wie Ryan Boren sagt: “Eure (Datenbank)Abfragen werden explodieren”

Quelle

Die Lösung

Die Lösung in den meisten Fällen ist also ganz einfach:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

aus der config.php entfernen! Wenn Du Dir unsicher bist, kannst Du die Einträge auch auskommentieren, indem Du /* vor und */ nach den beiden Zeilen setzt. Würde dann wie folgt aussehen.

/*define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');*/

Dies dürfte in den meisten Fällen genügen und kann auch bei Bedarf leicht rückgängig gemacht werden.

Generell gilt: Wer nicht noch zusätzlich an der WordPress-Datenbank schrauben will, sollte die beiden Zeilen nur in wp-config.php belassen bzw. hinzufügen, wenn die Version der ersten WordPress Installation mindestens 2.2 war!

Ein Hinweis in der wp-config-sample.php wäre hilfreich gewesen

wp-config-php

Sonst sparen die WordPress-Entwickler doch auch nicht mit Kommentaren.

Vielleicht wäre es für die Zukunft hilfreich, neben DB_CHARSET und DB_COLLATE noch kurz einen Hinweis zu setzen. Hätte mir und bestimmt auch anderen Bloggern einige Arbeit und Nerven erspart.

Kommentare

  • Ganz ohne ist also so ein Update nicht immer. Wenn man eine Sicherungsdatei hat, ist es ja nicht weiter schlimm. Diese sollt man jedenfalls anlegen.Bei größeren Versionssprüngen kann eine Neuinstallation sinnvoller sein. Und natürlich sollte man sich sicher sein, was man macht 😉

  • Ganz ohne ist also so ein Update nicht immer. Wenn man eine Sicherungsdatei hat, ist es ja nicht weiter schlimm. Diese sollt man jedenfalls anlegen.
    Bei größeren Versionssprüngen kann eine Neuinstallation sinnvoller sein. Und natürlich sollte man sich sicher sein, was man macht 😉

    Trendscout’s letzter Blogpost: Ja zur Blogvermarktung, aber

  • Hallo,sehr schöner Artikel. Wird sicherlich vielen da draußen helfen. Hoffentlich habe ich nicht auch diese Probleme, wenn ich meine WordPress Version aktualisiere.

  • Hallo,

    sehr schöner Artikel. Wird sicherlich vielen da draußen helfen. Hoffentlich habe ich nicht auch diese Probleme, wenn ich meine WordPress Version aktualisiere.

    Wenns passiert, weiß ich ja wo mir geholfen wird 😉

    Geldkrieg’s letzter Blogpost: 100.000er Marke geknackt!

  • Pingback: Wieder neue Wordpress 2.6 Keys! Wie alt ist Deine wp-config.php Datei? | Blogmillionär()

  • Pingback: WolframsWebWorld » Blog Archiv » Mein Update auf Wordpress 2.6()

  • Nervig, was die da immer ändern und nicht ausreichend dokumentieren. Naja, dank Abwarten mit dem Update und deines Artikels habe ich nun die Lösung.

  • Nervig, was die da immer ändern und nicht ausreichend dokumentieren. Naja, dank Abwarten mit dem Update und deines Artikels habe ich nun die Lösung.

  • Wer kann mir helfen? Bekomme diese Fehlermeldung:
    Parse error: syntax error, unexpected T_STRING in /homepages/0/d105338280/htdocs/wordpress-2.6-de_DE/wordpress/wp-config.php on line 7

    Habe
    define(‚DB_CHARSET‘, ‚utf8‘);
    define(‚DB_COLLATE‘, “);
    schon entfernt, hat aber nichts genützt

    Möchte WordPress neu installieren.

    Gruß

  • Wer kann mir helfen? Bekomme diese Fehlermeldung:
    Parse error: syntax error, unexpected T_STRING in /homepages/0/d105338280/htdocs/wordpress-2.6-de_DE/wordpress/wp-config.php on line 7

    Habe
    define(‚DB_CHARSET‘, ‚utf8‘);
    define(‚DB_COLLATE‘, “);
    schon entfernt, hat aber nichts genützt

    Möchte WordPress neu installieren.

    Gruß

  • Was steht denn in Zeile 7 ??
    define(‚DB_COLLATE‘, “); sieht bei mir genau so aus.
    Können es „falsche“ Gänsefüßchensein??
    Ist was im WP-Forum zu finden?? Etwa hier: bei google-Suche auf Platz 13 ->
    nach „Parse error: syntax error, unexpected T_STRING“

  • Was steht denn in Zeile 7 ??
    define(‚DB_COLLATE‘, “); sieht bei mir genau so aus.
    Können es „falsche“ Gänsefüßchensein??
    Ist was im WP-Forum zu finden?? Etwa hier: bei google-Suche auf Platz 13 ->
    nach „Parse error: syntax error, unexpected T_STRING“

  • Ergänzung: Es sind zwei ‚ ‚ und nicht ein “ !!!!!!!!!!!!!!!!!!!!!!!!
    Dann sollte es gehen 😉

  • Ergänzung: Es sind zwei ‚ ‚ und nicht ein “ !!!!!!!!!!!!!!!!!!!!!!!!
    Dann sollte es gehen 😉

  • Herzlichen Dank,nach dem Upgrade auf die 2.6.1 gabs erst mal eine Schrecksekunde.Das Auskommentieren hat übrigens auch nach dem Upgrade noch geholfen – anschließend waren die Umlaute ok.Merci und Grußalex

  • Herzlichen Dank,
    nach dem Upgrade auf die 2.6.1 gabs erst mal eine Schrecksekunde.
    Das Auskommentieren hat übrigens auch nach dem Upgrade noch geholfen – anschließend waren die Umlaute ok.

    Merci und Gruß
    alex

    Alex’s letzter Blogpost: DM Bogenschützen in Mittenwald

  • Daniel

    Daaaaaankeeee! Ich war schon so verzweifelt und befürchtete jeden einzelnen Blogposts unseres Business Blogs einzeln nach Sonderzeichen und Umlauten zu durchsuchen. Deine Seite ist sofort in die Lesezeichen gewandert!

  • Daniel

    Daaaaaankeeee! Ich war schon so verzweifelt und befürchtete jeden einzelnen Blogposts unseres Business Blogs einzeln nach Sonderzeichen und Umlauten zu durchsuchen. Deine Seite ist sofort in die Lesezeichen gewandert!

  • Hallo,du hast mir viel Zeit gespart. (Googlesuche auf Platz 1)bin bem Update von 2.3.2 nach 2.6.2 in die Falle getappt.jetzt brauche nur noch ein neues ThemaDankeStefan

  • Hallo,
    du hast mir viel Zeit gespart. (Googlesuche auf Platz 1)
    bin bem Update von 2.3.2 nach 2.6.2 in die Falle getappt.
    jetzt brauche nur noch ein neues Thema

    Danke
    Stefan

    Stefan’s letzter Blogpost: Eee PC 900

  • Denis

    Ich hab das ganze mal nachgestellt. Hat funktioniert und irgendwie nach paar Minuten ging schon nix mehr, bzw die Umlaute waren wieder verschwunden..
    Ne Idee?

  • Denis

    Ich hab das ganze mal nachgestellt. Hat funktioniert und irgendwie nach paar Minuten ging schon nix mehr, bzw die Umlaute waren wieder verschwunden..
    Ne Idee?

  • Pingback: Medientrainer Tobias Keller » Blog Archive » dies ist ein test()

  • DaRkGirL

    Hallo,
    ich hab ein riesen problem, auf meine seite steht
    Parse error: syntax error, unexpected T_STRING in /home/cybers/public_html/datas/config.php on line 6

    mein code ist

    <?php
    define( „DATABASE_SERVER“, „xxx“ );
    define( „DATABASE_USERNAME“, „xxx“ );
    define( „DATABASE_PASSWORD“, „xxx“ );
    define( „DATABASE_NAME“, „xxx“ );
    $mysql = mysql_connect(dbserver, dbusername, dbpw)or die(mysql_error()) ;
    $mysql_select_db( dbname );
    $username = mysql_real_escape_string($_POST[„username“]);

    ………

    Könnt ihr mir bitte helfennn … :'(((

  • DaRkGirL

    Hallo,
    ich hab ein riesen problem, auf meine seite steht
    Parse error: syntax error, unexpected T_STRING in /home/cybers/public_html/datas/config.php on line 6

    mein code ist

    <?php
    define( „DATABASE_SERVER“, „xxx“ );
    define( „DATABASE_USERNAME“, „xxx“ );
    define( „DATABASE_PASSWORD“, „xxx“ );
    define( „DATABASE_NAME“, „xxx“ );
    $mysql = mysql_connect(dbserver, dbusername, dbpw)or die(mysql_error()) ;
    $mysql_select_db( dbname );
    $username = mysql_real_escape_string($_POST[„username“]);

    ………

    Könnt ihr mir bitte helfennn … :'(((

  • Na Super, bei mir ist alles durcheinander. Danke für die Hinweise!

  • Na Super, bei mir ist alles durcheinander. Danke für die Hinweise!

  • Pingback: Blog der Familie Kaden » Blog Archive » Aufräumaktion im Blog und Ihre Folgen ….()

  • Danke für die Tipps zum Auskommentieren, bei mir (nutze WP 2.61) bleiben die Umlaute trotzdem chaotisch – außer auf der Startseite. Könnte es vielleicht am Plugin Superchache oder Simple Tags liegen? Bin echt ratlos… :-((

  • Danke für die Tipps zum Auskommentieren, bei mir (nutze WP 2.61) bleiben die Umlaute trotzdem chaotisch – außer auf der Startseite. Könnte es vielleicht am Plugin Superchache oder Simple Tags liegen? Bin echt ratlos… :-((

  • und ich Depp hab alle Tabellen zu UTF8 gewandelt, weil die teilweise noch in ISO-8859-1 waren.
    Ganz mühsam mit
    SELECT table_name, table_collation FROM tables WHERE table_collation ‚utf8_general_ci‘ and table_schema = ‚…‘ and table_collation ‚utf8_bin‘
    Dann alle mit bspw.
    alter table gschmarri_posts CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    umgeschubst.
    Das alles für 8 Websites. Das wäre echt einfacher gegangen. Danke für den Tip!

  • und ich Depp hab alle Tabellen zu UTF8 gewandelt, weil die teilweise noch in ISO-8859-1 waren.
    Ganz mühsam mit
    SELECT table_name, table_collation FROM tables WHERE table_collation ‚utf8_general_ci‘ and table_schema = ‚…‘ and table_collation ‚utf8_bin‘
    Dann alle mit bspw.
    alter table gschmarri_posts CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    umgeschubst.
    Das alles für 8 Websites. Das wäre echt einfacher gegangen. Danke für den Tip!

  • Sven

    Aaaah, danke danke danke. Habe nach langer Zeit direkt auf 2.8 geupdatet und war kurz davor, alle Sonderzeichen in den Tabellen zu ersetzen.. Hat mir viel Nerven und Zeit gespart 🙂

  • Sven

    Aaaah, danke danke danke. Habe nach langer Zeit direkt auf 2.8 geupdatet und war kurz davor, alle Sonderzeichen in den Tabellen zu ersetzen.. Hat mir viel Nerven und Zeit gespart 🙂

  • Pingback: links for 2009-07-28 – Irgendwas ist ja immer – Reloaded()

  • Pingback: Bätschman on Tour - www.Baetschman.de » Wordpress Update - irgendwas ist ja immer()

  • Tom

    Danke, fuer den Tipp.

  • Pingback: NormCast.de » Umzug vollendet!()

  • Pingback: WordPress Update. Probleme Inklusiv die Zweite « Takealook()

  • Pingback: stilhaeschen » Blog Archive » Alter Arsch Wordpress()

  • re_phil

    Das geht in der neuen Version aber nicht mehr, oder?

    Bei uns sehen die Umlaute total seltsam im IExplorer aus:

    http://www.konisto.de/anleitung_abnehmen-beim-t

  • danke danke danke. Habe nach langer Zeit direkt auf 2.8 geupdatet und war kurz davor, alle Sonderzeichen in den Tabellen zu ersetzen..

  • Michisos

    eine frechheit ist das…
    man updatet die wordpress version und alles was man kopiert und einfügt, egal wo, wird falsch dargestellt,  – Wieso tretten so eine fehler im gesammten mac bereich auf, das ist doch fast nicht rechtens das sowas passiert!

  • Wenn in WordPress die deutschen Sonderzeichen fehlen:

    http://blogorama.eisbrecher.net/2012/06/25/wenn-in-wordpress-die-deutschen-sonderzeichen-fehlen/

    Vielleicht ist das hilfreich? Good luck!

Bottom