Wissensdatenbank

1 000 FAQs, 500 Anleitungen und erläuternde Videos. Hier gibt es nur Lösungen!

Ein Problem mit der Zeichenkodierung von Webseiten beheben

Aktualisierung 04.08.2026

Dieser Leitfaden richtet sich an Entwickler und Webmaster, die Probleme bei der Darstellung von Sonderzeichen (z. B. Akzente, arabische Zeichen, chinesische Zeichen, Emojis usw.) auf einer Infomaniak-Website oder in deren Datenbank feststellen.

 

Einleitung

  • Häufige Ursachen für falsch dargestellte Zeichen, die anstelle von Sonderzeichen oder Emojis wie ?? angezeigt werden:
    • PHP-Verbindung in utf8 anstelle von utf8mb4
    • MySQL-Tabelle oder -Spalte in latin1 oder utf8 anstelle von utf8mb4
    • SQL-Datei, die anders als die Importeinstellung codiert ist
    • Falsch codierte HTML-/CSS-/JS-Dateien
    • Fehlende oder falsche Charset-Deklaration auf HTML-, PHP- oder HTTP-Ebene
  • Übliche Lösungen:
    • Überall utf8mb4 verwenden: Datenbank, Verbindungen, Tabellen, Spalten, Dateien, Header
    • Die Codierung aller Dateien und Datenbank-Dumps überprüfen
    • Die Anzeige von Emojis, Akzenten und anderen mehrsprachigen Zeichen testen
  • Lesen Sie auch diese andere Anleitung, um eine andere Kodierung bei der Verbindung zu einer MySQL-Datenbank zu erzwingen.

 

Verwenden Sie einen Texteditor, der das Speichern in UTF-8 ohne BOM unterstützt (Visual Studio Code, Sublime Text, Notepad++...)

 

1. Überall UTF-8 oder UTF-8MB4 verwenden

Die MySQL-Kodierung utf8 unterstützt keine 4-Byte-Zeichen, wie z. B. Emojis. Diese werden als ?? angezeigt. Daher sollte utf8mb4 verwendet werden, das eine vollständige UTF-8-Implementierung darstellt.

 

2. HTML – Korrekte Angabe der Zeichenkodierung

Im <head> Ihrer HTML-Seiten:

Stellen Sie außerdem sicher, dass die CSS-/JS-Dateien im UTF-8-Format (ohne BOM) gespeichert sind.

Assurez-vous aussi que les fichiers CSS/JS sont enregistrés en UTF-8 (sans BOM). 

 

3. PHP – UTF-8 oder UTF-8MB4 erzwingen

a) HTTP-Header

header('Content-Type: text/html; charset=utf-8');

b) MySQL-Verbindung (MySQL-API)

b) Connexion MySQL (API MySQL)

$connection = mysql_connect($host, $user, $pass);
mysql_set_charset('utf8mb4', $connection);

c) PDO-Verbindung

 $dsn = "mysql:host=localhost;dbname=ma_base;charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

 

4. MySQL-Datenbank

a) Konfiguration in phpMyAdmin

  • Datenbank, Tabellen und Spalten müssen in utf8mb4_unicode_ci oder utf8mb4_general_ci codiert sein.
  • Auf der Registerkarte Operationen wählen Sie utf8mb4_unicode_ci für die Sortierung aus.

b) Nützliche SQL-Befehle

ALTER DATABASE ma_base CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE ma_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

c) Nach der PHP-Verbindung

mysqli_query($conn, "SET NAMES 'utf8mb4'");
mysqli_query($conn, "SET CHARACTER SET 'utf8mb4'");

 

5. .user.ini- / .htaccess-Datei

Um die Zeichenkodierung serverseitig (Apache) zu erzwingen:

AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
# Für PHP
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8

 

6. Importieren/Exportieren von SQL-Dumps

Fehler, bei denen beispielsweise é zu ? oder ein Emoji ☺ zu ?? wird, entstehen oft durch eine fehlerhafte Zeichenkodierung.

Überprüfen Sie die Kodierung der SQL-Datei vor dem Import. Verwenden Sie gegebenenfalls iconv:

iconv -f ISO-8859-1 -t UTF-8 dump.sql > dump_utf8.sql

Geben Sie in phpMyAdmin die zu verwendende Zeichenkodierung für den Import an (z. B. UTF-8, UTF-8MB4 oder latin1, je nach Datei).


War diese FAQ nützlich?