Hier ist ein kleines Skript um Umlaute in einer MySQL Datenbank anzupassen falls diese nicht mehr stimmen (ä statt ä etc.)
Das Original findet ihr hier – ich habe das Skript erfolgreich getestet. Zugangsdaten müssen logischerweise angepasst werden.
<?php /** * Alle kaputten Umlaute reparieren bei Umstellung von ISO->UTF8 * * @project - * @author Boris Bojic <bojic@devshack.biz> * @copyright Copyright (c) 2011, Boris Bojic (DevShack) * @version Fri, 23 Dec 2011 13:47:11 +0100 * @updated - * */ // === [ Content / Charset ] ============================================== header('Content-Type: text/html; charset=utf-8'); // PHP auch explizit auf UTF-8 setzen mb_internal_encoding('UTF-8'); $db = array(); $db['host'] = "localhost"; $db['uname'] = "mysql_user"; $db['password'] = "mysql_pass"; $db['database'] = "datenbankname"; $dbconnect = mysql_connect($db['host'], $db['uname'], $db['password']) or die ("Konnte keine Verbindung zur Datenbank aufnehmen!"); mysql_select_db($db['database'],$dbconnect) or die ("Fehler beim Auswählen der Datenbank!"); mysql_set_charset('utf8'); echo '<pre>'; function getTables($db){ $result = mysql_query("SHOW TABLES FROM " . $db['database']); while($row = mysql_fetch_row($result)){ $res[] = $row[0]; } return $res; } function getColumns($table){ $table = mysql_real_escape_string($table); $mysqlres = mysql_query("SHOW COLUMNS FROM " . $table); while($row = mysql_fetch_row($mysqlres)){ $res[] = $row[0]; } return $res; } // Alle Tabellen ermitteln $tablesArray = getTables($db); // Alle Spalten pro Tabelle ermitteln und durcharbeiten foreach($tablesArray AS $table){ $affectedRows = 0; $spalten = getColumns($table); echo "Tabelle: " . $table . "<br />"; foreach($spalten AS $spalte){ echo "...Spalte: " . $spalte . "<br />"; $query = ' UPDATE `' . $table . '` SET `' . $spalte . '` = REPLACE(`' . $spalte . '`,"ß", "ß"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "ä", "ä"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "ü", "ü"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "ö", "ö"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ä", "Ä"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ãœ", "Ü"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "Ö", "Ö"), `' . $spalte . '` = REPLACE(`' . $spalte . '`, "€", "€") '; mysql_query($query) OR die(mysql_error() . $query); $affectedRows += mysql_affected_rows(); } echo "Tabelle " . $table . " aktualisiert, Datensätze: " . $affectedRows . "<br /><br />"; }