UTF-8 in HTML, PHP und MySQL
Liebe Forumsbesucher,
als Anfänger bin ich beim Erstellen einer PHP-Datei, die auf eine MySQL-Datenbank zurückgreift, auf ein unerwartetes Problem gestoßen. In meiner Datenbank finden sich deutsche und vietnamesische Begriffe (jeweils mit den entsprechenden Sonderzeichen und Umlauten). Bei der Ausgabe werden diese nicht mehr richtig angezeigt.
Ich kenne solche Probleme aus der Textverbeitung. Mit einem umfassenden Zeichensatz wie UTF-8 sollte die richtige Darstellung kein Problem sein. Ich nehme an, dass in irgendeinem Bereich der Verarbeitung UTF-8 nicht angegeben ist.
Der Code sieht so aus:
$An = mysqli_connect (...);
$Auf = mysqli_query ($An, "SELECT * FROM ...");
echo '<table>';
while ($Satz = mysqli_fetch_array($Auf))
{echo '<tr><td>' . $Satz['Vietnamesisch'] . '</td><td>' . $Satz['Deutsch'] . '</td></tr>';}
echo '</table>';
Wenn ich in den Code
echo mysqli_character_set_name($An);
schreibe, kommt tatsächlich "Latin1" als Ergebnis. Vermutlich liegt hier der Fehler, da Latin1 diakritische Zeichen nicht unterstützt. Es hilft auch nicht, wenn ich
mysqli_set_charset($An, 'utf8');
schreibe. Denn in db.opt steht bereits:
default-character-set=utf8
default-collation=utf8_unicode_ci
Auf irgendeiner Ebene (die durch mysqli_character_set_name dargestellt wird) gibt es also noch kein UTF-8.
Wie kann ich dafür sorgen, dass die gesamte Datenspeicherung, -verarbeitung und -ausgabe (von der Datenbank über PHP bis zum im Browser angezeigten HTML) mit UTF-8 arbeitet?
Oder wie kann ich anders auf saubere und sichere Weise dafür sorgen, dass alle Sonderzeichen richtig übertragen und verarbeitet werden?
Vielen Dank im Voraus für Eure Antwort!
|