1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Probleme mit ungewöhnlichen Zeichen und der Zeichenkodierung auf Seiten ausschliessen
Wenn verschiedene Instanzen sich Daten senden, können Probleme im Bereich der Textkodierung auftreten.
Wenn z.B. die HTML-Seite in UTF8 codiert ist, die Datenbank aber in latin-1, werden Sonderzeichen von MySQL nicht korrekt interpretiert. Wenn die Seiten Sonderzeichen (arabisch, chinesisch, Akzente) enthalten, werden sie in Ihrer Website eventuell korrekt angezeigt, in phpMyAdmin jedoch nicht (oder umgekehrt).
Damit alles funktioniert, muss überall der verwendete Zeichensatz (aus praktischen Gründen UTF8) angegeben werden.
Verwenden Sie eine Textverarbeitung, die Ihre Dateien in UTF8 speichern kann. Wenn Textdateien, die SQL-Code beinhalten, importiert werden, müssen sie mit einer Anwendung bearbeitet werden, die in UTF-8 speichern kann.
Legen Sie in den Headern der Website UTF-8 fest, indem Sie diese PHP-Funktion verwenden:
header('Content-Type: text/html; charset=utf-8');
Fügen Sie Folgendes in die Metadaten im Bereich des HTML-Codes ein
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Geben Sie die Zeichenkodierung Ihrer Datenbanken und Tabellen in PHPMyAdmin als UTF-8 an (z.B. utf8_general_ci)
Fügen Sie folgende Zeilen in Ihre .htaccess-Datei im Ordner /web ein:
php_value default_charset utf-8
php_value mbstring.internal_encoding UTF-8
Fügen Sie die PHP-Funktion mysql_set_charset zu der von mysql_connect angelegten Verbindung hinzu, um die Zeichenkodierung dieser Verbindung zu bestimmen (andernfalls kann der Standardwert dieser Einstellung je nach Server unterschiedlich sein):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
Sie können diese Standardeinstellung auch für Ihr gesamtes Hosting ändern; halten Sie sich dabei an diese Dokumentation.
Nachdem die MySQL-Verbindung von einem PHP-Skript aus besteht, müssen Sie mit folgenden Befehlen den Zeichensatz UTF8 angeben:
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
Wenn Sie eine MySQL-Dump-Datei (Backup) herunterladen und in Ihre Datenbank importieren, werden möglicherweise alle Sonderzeichen durch seltsame Zeichen (z.B. "?") ersetzt.
Sicherheitskopien von MySQL-Datenbanken werden im Format UTF8 erstellt. Dabei werden Sonderzeichen als Doppelbytes kodiert. Der Import dieser Sicherheitskopien macht auf unseren Servern keine Probleme, aber Sie müssen Ihren privaten Computer für den lokalen Import von Datenbanken im Format UTF8 konfigurieren.
Sie können beispielsweise die SQL-Datei vor dem Import von utf8 in latin1 umwandeln.
Sie können beim Datenbank-Import aber auch festlegen, dass das Format Ihrer Eingangsdatei iso-latin1 ist (Import, "Datei-Zeichensätze"); dann erfolgt der Import korrekt.
Wenn Sonderzeichen in '?' umgewandelt werden, ist die importierte Datei wahrscheinlich im Non-UTF8-Format und die Software für den Import einer UTF-8-Datei eingerichtet. Unter Linux können Sie die Umwandlung in UTF-8 mit dem Befehl 'iconv' starten.