1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Ein Problem mit der Seitenkodierung beheben
Diese Anleitung betrifft Sie, wenn Sie Probleme mit der Seitenkodierung und ungewöhnlichen Zeichen haben, die auf Ihren Seiten erscheinen.
Universelle Kodierung
Wenn Sie Probleme mit der Seitenkodierung haben, ist es wichtig zu überprüfen, dass die Kodierung Ihrer Seite auf UTF-8 festgelegt ist. UTF-8 ist eine universelle Kodierung, die die meisten weltweit verwendeten Zeichen unterstützt. Es kann vorkommen, dass einige Dateien Zeichen enthalten, die mit der UTF-8-Kodierung nicht kompatibel sind. In diesem Fall müssen Sie sie mit einem geeigneten Texteditor in UTF-8 konvertieren.
Wenn die Kodierung der HTML-Seite beispielsweise in UTF-8 ist, während die Datenbank in latin-1 ist, werden die Akzente von MySQL nicht korrekt interpretiert. Wenn die Seiten Sonderzeichen enthalten (arabische, chinesische Texte, Akzente), können sie auf Ihrer Website korrekt angezeigt werden, aber nicht in phpMyAdmin, oder umgekehrt...
Verwenden Sie einen Texteditor, der Ihre Dateien in UTF-8 speichern kann. Wenn Sie Textdateien mit SQL-Code importieren, müssen Sie diese mit einer Software bearbeiten, die in UTF-8 speichert.
UTF-8 in PHP
Um die Headers der Website auf UTF-8 zu erzwingen, können Sie die Funktion header()
mit dem Parameter Content-Type
verwenden. Hier ist ein Beispielcode, der das Zeichencodierung auf UTF-8 erzwingt:
<?php
header('Content-Type: text/html; charset=utf-8');
?>
UTF-8 über .htaccess
Um die Zeichencodierung über die .htaccess-Datei Ihrer Website auf UTF-8 zu erzwingen, fügen Sie für HTML-Inhalt hinzu:
AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
und für PHP-Inhalte hinzufügen:
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
UTF-8 in HTML
Um die Zeichencodierung in UTF-8 im HTML-Code anzugeben, können Sie das Meta-Tag charset
verwenden:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Titre de la page</title>
</head>
<body>
<!-- Contenu de la page -->
</body>
</html>
Stellen Sie sicher, dass auch alle auf Ihrer Website verwendeten Dateien, wie CSS-Dateien und JavaScript-Skripte, in UTF-8 kodiert sind. Dadurch wird gewährleistet, dass alle Zeichen auf Ihrer Website korrekt angezeigt werden.
UTF-8 in der Datenbank
Um die Kodierung der Datenbanken und Tabellen in phpMyAdmin auf UTF-8 (neu) zu deklarieren, können Sie die folgenden Schritte ausführen:
- Melden Sie sich bei Ihrem phpMyAdmin- Steuerungspanel an.
- Klicken Sie auf die Registerkarte "Operationen" oben.
- Im Abschnitt "Tabellenoptionen" suchen Sie die Zeile "Sortierung" und klicken Sie auf die Dropdown-Schaltfläche.
- Wählen Sie eine Kollationsoption, die die UTF-8-Kodierung verwendet, z. B.
utf8_general_ci
. - Klicken Sie auf die Schaltfläche "Ausführen" unten auf der Seite, um die Änderungen zu speichern.
Fügen Sie die PHP-Funktion mysql_set_charset
zur Verbindung hinzu, die von mysql_connect erstellt wurde, um die Kodierung dieser Verbindung festzulegen (wenn Sie dies nicht angeben, kann der Standardwert dieses Parameters von einem Server zum anderen variieren):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
Sie können diesen Standardwert auch für Ihre gesamte Hosting-Umgebung ändern, indem Sie dieser Dokumentation folgen.
Sobald die MySQL-Verbindung von einem PHP-Skript hergestellt wurde, können Sie auch den Zeichensatz-Typ UTF8 mit diesen Befehlen angeben:
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
Sonderzeichen / Akzente
Wenn Sie ein Backup Ihrer MySQL-Datenbank (auch "Dump" genannt) wiederherstellen und in Ihre eigene Datenbank importieren, können Akzente (wie é, à, ô) als seltsame Symbole angezeigt werden, wie Fragezeichen (z.B. "?" anstelle eines Akzents).
Das liegt daran, dass MySQL-Sicherungen normalerweise in einem speziellen Format namens UTF-8
erstellt werden. In diesem Format benötigen Buchstaben mit Akzenten mehr Platz (sie sind auf zwei Bytes codiert, ein bisschen wie zwei "Einheiten" Daten pro Zeichen). Auf Servern funktioniert das gut, aber wenn Sie an Ihrem persönlichen Computer arbeiten, müssen Sie möglicherweise einige Konfigurationen anpassen, damit die Importierung korrekt mit UTF-8
funktioniert. Das Problem mit den seltsamen Zeichen tritt normalerweise auf, wenn es eine Codierungsinkongruenz zwischen der Sicherungsdatei und dem Import gibt. Dies kann passieren, wenn die Datei in einem Format codiert ist (z.B. UTF-8
), aber MySQL ein anderes Codierungsformat erwartet (z.B. latin1
).
Hier sind einige Lösungen:
- Datei konvertieren: Sie können die Sicherungsdatei von
UTF-8
in ein anderes Format, genanntlatin1
, konvertieren, bevor Sie sie in Ihre Datenbank importieren. Dies kann verhindern, dass Akzente falsch interpretiert werden, aber es gibt Einschränkungen. Wenn die Datei Zeichen enthält, die nicht inlatin1
dargestellt werden können (wie bestimmte Sonderzeichen oder nicht-europäische Zeichen), riskieren Sie, diese Zeichen bei der Konvertierung zu verlieren. Dies ist daher eine Lösung, die mit Vorsicht angewendet werden sollte, und sie hängt vom Datentyp in Ihrer SQL-Datei ab. - Das richtige Format beim Importieren angeben: Wenn Sie die Datei nicht konvertiert haben, können Sie beim Importieren angeben, dass die Datei im Format
iso-latin1
vorliegt (beim Importieren einer SQL-Datei können Sie explizit angeben, dass die Datei in ISO-8859-1, auch als latin1 bekannt, vorliegt). Dadurch wird der Dateiencodierung mit dem von MySQL erwarteten Encodierung angeglichen, was das Problem der falsch angezeigten Zeichen in der Regel löst.
Wenn Sie Fragezeichen anstelle von Akzenten sehen, bedeutet dies wahrscheinlich, dass die Sicherungsdatei in einem anderen Format als UTF-8
vorliegt, Ihr Software jedoch versucht, sie als UTF-8
zu importieren. Um dies zu vermeiden, können Sie unter Linux einen Befehl namens iconv
verwenden, um die Datei vor dem Import in UTF-8 zu konvertieren. Dadurch wird sichergestellt, dass die Kodierung mit den Erwartungen von MySQL übereinstimmt.