Von Serendipity zu WordPress mit Umlauten

Nach langem Hin und Her und viel Fluchen habe ich es geschafft, die Inhalte von „Verstand in Gefahr?!“ weitesgehend verlustfrei zu übertragen. Grundsätzlich Hilfe bot das Plugin, welches ich bei Snowulf via Dobschat gefunden habe.

Leider machte dieses Importtool erhebliche Probleme bei Umlauten. Die aus PHP bekannte Funktion utf8_decode() half leider auch nicht weiter, weil aus irgendwelchen Gründen dann zwar die Umlaute korrekt übertragen wurden, aber jeder Eintrag beim ersten ß abbrach. Das ist für ein deutsches Blog auch etwas unbefriedigend.

Also blieb mir nichts anderes übriges, als etwas „quick & dirty“ ein kleines Skript zu schreiben, mit dem zumindest die Kommentare und Einträge wieder lesbar sind. In einem ersten Schritt habe ich die Tabellen serendipity_entries und serendipity_comments in die WordPress-Datenbank importiert und darüber folgendes Skript laufen lassen.

<?php
 include("connect_db.php"); // eure Datenbankverbindung
 $sql="SELECT * FROM serendipity_entries;";
 $result=mysql_query($sql) or die(mysql_error());
 while($row=mysql_fetch_array($result))
 {
 $body=utf8_decode($row['body']);
 $titel=utf8_decode($row['title']);
 $sql_wp="UPDATE wp_posts SET post_content='".mysql_real_escape_string($body)."', post_title='".mysql_real_escape_string($titel)."' WHERE ID=".$row['id'].";";
 mysql_query($sql_wp) or die(mysql_error().$sql_wp);
 }
 $sql_2="SELECT comment_ID, body, id as s9yid FROM `wp_comments`, serendipity_comments WHERE comment_post_ID=entry_id and comment_author_IP=ip and comment_author_email=email and left(comment_content,4)=left(body,4)
;"; // das ist sicherlich nicht ganz perfekt, aber zumindest bei mir paßte dieses Konstrukt
 $result2=mysql_query($sql_2) or die(mysql_error());
 while($row2=mysql_fetch_array($result2))
 {
 $inhalt=utf8_decode($row2[1]);
 $sql_com="UPDATE wp_comments SET comment_content='".mysql_real_escape_string($inhalt)."' where comment_ID=$row2[0];";
 mysql_query($sql_com) or die(mysql_error().$sql_com);
 }
?>

Wie gesagt: quick & dirty, aber nun sind alle Einträge komplett inklusive Umlauten in WordPress.