Kennisbank
1.000 veelgestelde vragen, 500 tutorials en uitlegvideo's. Hier vind je alleen maar oplossingen!
Een probleem met de pagina-encodering oplossen
Deze handleiding is bedoeld voor ontwikkelaars en webmasters die problemen ondervinden met de weergave van speciale tekens (bijv. accenten, Arabische tekens, Chinese tekens, emojis, enz.), of dit nu op een Infomaniak-website is of in hun database.
Inleiding
- Veelvoorkomende oorzaken van verkeerd weergegeven tekens, die in plaats van speciale tekens of emoji's verschijnen, zoals
??:- PHP-verbinding in
utf8in plaats vanutf8mb4 - MySQL-tabel of -kolom in
latin1ofutf8in plaats vanutf8mb4 - SQL-bestand is anders gecodeerd dan de importparameter
- HTML/CSS/JS-bestanden zijn verkeerd gecodeerd
- Ontbrekende of onjuiste declaratie van de charset op de HTML-, PHP- of HTTP-pagina
- PHP-verbinding in
- Gebruikelijke oplossingen:
- Gebruik overal
utf8mb4: database, verbindingen, tabellen, kolommen, bestanden, headers - Controleer de codering van alle bestanden en dumps
- Test de weergave van emoji's, accenten en andere meertalige tekens
- Gebruik overal
- Raadpleeg ook deze andere handleiding om een andere codering te forceren bij de verbinding met een MySQL-database.
Gebruik een teksteditor die het opslaan in UTF-8 zonder BOM ondersteunt (Visual Studio Code, Sublime Text, Notepad++...)
1. Gebruik overal UTF-8 of UTF-8MB4
De MySQL-codering utf8 ondersteunt geen 4-byte tekens, zoals emoji's. Deze worden weergegeven als ??. Daarom moet utf8mb4 worden gebruikt, wat een volledige implementatie van UTF-8 is.
In de <head> van uw HTML-pagina's:
Zorg er ook voor dat de CSS/JS-bestanden zijn opgeslagen in UTF-8 (zonder BOM).
<meta charset="UTF-8">utf8mb4_unicode_ci of utf8mb4_general_ci staan.utf8mb4_unicode_ci voor de sorteervolgorde.Om de codering op de server (Apache) af te dwingen:
header('Content-Type: text/html; charset=utf-8');Fouten zoals é wordt ? of een emoji ☺ wordt ??, komen vaak voort uit een verkeerde codering.
$connection = mysql_connect($host, $user, $pass);
mysql_set_charset('utf8mb4', $connection);Controleer de codering van het SQL-bestand voordat u het importeert. Gebruik indien nodig iconv:
$dsn = "mysql:host=localhost;dbname=ma_base;charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);4. MySQL-Datenbank
In phpMyAdmin geeft u de importcodering op (bijv. UTF-8, UTF-8MB4 of latin1, afhankelijk van het bestand).
- Datenbank, Tabellen und Spalten müssen in
utf8mb4_unicode_cioderutf8mb4_general_cisein. - Im Reiter Operationen wählen Sie
utf8mb4_unicode_cifür die Sortierung.
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. Datei .user.ini / .htaccess
Um die Codierung auf der Serverseite (Apache) zu erzwingen:
AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
# Pour PHP
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-86. Import / Export von SQL-Dumps
Fehler wie é wird zu ? oder ein Emoji ☺ wird zu ?? stammen oft von einer Codierungsfehlausrichtung.
Überprüfen Sie die Codierung der SQL-Datei vor dem Import. Verwenden Sie iconv falls erforderlich:
iconv -f ISO-8859-1 -t UTF-8 dump.sql > dump_utf8.sqlIn phpMyAdmin geben Sie die Importcodierung an (z.B. UTF-8, UTF-8MB4 oder latin1 je nach Datei).
Link naar deze veelgestelde vragen: https://faq.infomaniak.com/1124
Is deze veelgestelde vragenlijst nuttig geweest?