Über den Author / Internet / Defekte Sonderzeichen bei WordPress

Defekte Sonderzeichen bei WordPress

~2 Min. Lesezeit

Wenn man den Hoster wechselt und damit sein WordPress verschieben muss, kommt man um ein Export/Import der Datenbank nicht herum.

Da die Datenbanken als Standard Charset Einstellung latin1, latin2 oder utf8 stehen, kommt so schnell ein Chaos auf und die Sonderzeichen werden einem zerstört.

So werden aus ä ö ü schnell mal ä ö oder gar ä ö ü. Nervig!

Damit ein Freund das Problem nicht mehr hat, habe ich ihm kurz ein Fix als PHP Script gemacht:

<?php

define('DB_NAME', '');    // Ersetze putyourdbnamehere mit dem Namen der Datenbank, die du benutzt.
define('DB_USER', '');     // Ersetze usernamehere mit deinem MySQL-Datenbank-Benutzernamen.
define('DB_PASSWORD', ''); // Ersetze yourpasswordhere mit deinem MySQL-Passwort.
define('DB_HOST', 'localhost');    // In 99% der Fälle musst du hier nichts ändern. Falls doch ersetze localhost mit der MySQL-Serveradresse.

$table_prefix  = 'wp_';

$db = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME);

$in = array("ä","ö","ü","Ä", "Ö", "Ãœ","“","„","–","ß","  ");
$out = array("ä","ö","ü","Ä", "Ö", "Ü","»","«","=","ß"," ");

	$abfrage= mysql_query("SELECT ID,post_content,post_title FROM ".$table_prefix."posts");
	while($row = mysql_fetch_assoc($abfrage))
	{
		$t = str_replace($in,$out,$row['post_content']);
		$t2 = str_replace($in,$out,$row['post_title']);
		mysql_query("UPDATE ".$table_prefix."posts SET post_title='".mysql_real_escape_string($t2)."', post_content='".mysql_real_escape_string($t)."' WHERE ID='".$row['ID']."' LIMIT 1");
		?>. <?
	}


	$abfrage= mysql_query("SELECT comment_ID,comment_content FROM ".$table_prefix."comments");
	while($row = mysql_fetch_assoc($abfrage))
	{
		$t = str_replace($in,$out,$row['comment_content']);
		mysql_query("UPDATE ".$table_prefix."comments SET comment_content='".mysql_real_escape_string($t)."' WHERE comment_ID='".$row['comment_ID']."' LIMIT 1");
		?>. <?
	}

	$abfrage= mysql_query("SELECT link_id,link_name FROM ".$table_prefix."links");
	while($row = mysql_fetch_assoc($abfrage))
	{
		$t = str_replace($in,$out,$row['link_name']);
		$t2 = str_replace($in,$out,$row['link_description']);
		mysql_query("UPDATE ".$table_prefix."links SET link_name='".mysql_real_escape_string($t)."', link_description='".mysql_real_escape_string($t2)."' WHERE link_id='".$row['link_id']."' LIMIT 1");
		?>. <?
	}

	$abfrage= mysql_query("SELECT term_id,name FROM ".$table_prefix."terms");
	while($row = mysql_fetch_assoc($abfrage))
	{
		$t = str_replace($in,$out,$row['name']);
		mysql_query("UPDATE ".$table_prefix."terms SET name='".mysql_real_escape_string($t)."' WHERE term_id='".$row['term_id']."' LIMIT 1");
		?>. <?
	}


?>

Noch die Datenbank Details angeben und das Script per Browser aufrufen. Leider kenne ich den „verhunzten“ Code für das grosse Ö nicht, warum diese oben in der Liste gegebenenfalls ergänzt werden müssen. Wer diese kennt, kann die mir sehr gerne mitteilen.
Das Script behebt Fehler im Titel, Beitragstext und den Kommentaren.

PS: Wenn ihr das Script per Browser aufrufen möchtet und ein Fehler vom WordPress erhaltet, habt ihr Mod-Rewrite angeschaltet. Benennt dann kurzzeitig die .htaccess um, damit ihr den Fix aufrufen könnt.

Hier könnt ihr die Datei runterladen: Sonderzeichen Fix für WordPress (als PHP abspeichern!)

About Stefan

avatar
Ein männlicher IT Nerd, durchstöbert das Web nach speziellen Gadgets, unentbehrlicher Software und Alles was man im IT Sektor nicht verpassen darf.Immer hilfsbereit wenn Probleme zu lösen sind oder das Unmögliche umgesetzt werden sollte.

Weitere interessante Artikel

PHP Trojaner (Teil 4: Codierte Uploader Infektion)

~2 Min. LesezeitNicht jeder PHP Trojaner kann auf den ersten Blick identifiziert werden, was der …

PHP Trojaner (Teil 3: Spamsender Infektion)

~1 Min. LesezeitSpam ist ein grosses Problem der heutigen Zeit, doch wer verschickt Spam und …

3 Kommentare

  1. avatar

    Hey,

    Das verhunzte Ä war bei mir ein ë 😉

    Gruss
    Silvan

  2. avatar

    Ich nehme dazu ein Plugin was WP-Optimize heisst, das löscht auf Bedarf die Versionierung und dennoch ist es vorhanden beim täglichen Arbeiten. Auch optimiert dies noch ein wenig die DB’s.

  1. Pingback: Ältere Beitragsversionen in Wordpress löschen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

This Blog will give regular Commentators DoFollow Status. Implemented from IT Blögg