Ich benutze MySQL 5.1 und lade aus einer UTF-8 dekodierten txt-Datei ca. 2.7 Mil Zeilen in eine Tabelle, die selbst als utf8_unicode_ci
deklariert ist und auch alle char-Felder als utf8_unicode_ci
deklariert werden, mit LOAD DATA INFILE
...
In der Datenbank selbst scheinen die Charaktere korrekt zu sein, alles sieht gut aus. Wenn ich sie jedoch mit PHP drucke, erscheinen die Zeichen als ???, obwohl ich die utf-8-Deklaration im HTML-Kopf verwende:
%Vor% In einer anderen Tabelle (mit utf-8), wo ich Text von einem übermittelten Formular eingefügt habe, erscheinen die Zeichen merkwürdig in der Datenbank, werden aber wieder korrekt angezeigt, wenn ich sie mit SELECT...
drucke.
Also, ich habe mich gefragt: was ist los? Sind UTF-8
chars korrekt in der Datenbank oder seltsam dargestellt, aber wenn Sie sie wieder SELECT
haben, sind sie OK? Oder wo ist das Problem (beim Laden der Datei in die db, im HTML oder irgendwo dazwischen) ??
Vielen Dank für einen Hinweis oder Vorschlag! :)
Hinweis: MySQL utf8
Zeichensatz ist begrenzt, es unterstützt nur Unicode-Zeichen in der BMP, die nicht mehr als drei Bytes belegen. Sie sollten stattdessen utf8mb4
verwenden.
SET NAMES utf8
SET NAMES utf8mb4
an MySQL senden, bevor Sie MySQL-Abfragen ausführen. Content-Type: text/html;charset=iso-8859-1
, Browser sind sich nicht einig, welche sollten gewinnen). utf8
durch utf8mb4
where zu ersetzen MySQL ist betroffen). Wenn phpMyAdmin Ihre eingegebenen Daten als korrekten Unicode-Text anzeigt, dann wette ich, dass Sie nach dem Verbinden nicht SET NAMES utf8
ausführen.
Tags und Links html mysql character-encoding utf-8