UTF-8 Problem . Umlaute werden falsch dargestellt?
Hallo und guten Morgen,
kann mir hierbei jemand helfen?
Folgendes passiert :
Ich möchte Daten in meiner DB speichern. Das Speichern wird wie gewünscht umgesetzt, doch leider werden die Umlaute falsch interpretiert.
Ein "halbe" Lösung habe ich gefunden.
Sofern ich diesen Abschnitt an den Anfang der Seite setze:
header('Content-Type: text/html; charset=ISO-8859-1');
werden die Wörter richtig in der DB abgespeichert.
ABER...
Danach werden die Wörter im HTML-Code falsch dargestellt.
Momentan habe ich also die Wahl, ob die Umlaute falsch in der DB abgespeichert werden, oder falsch in HTML angezeigt werden.
PS: Im HTML habe ich Folgendes gesetzt:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Vielen Dank und schönen Sonntag .
2 Antworten
Lies dir mal Zeichencodierung/MySQL bei SelfHTML durch.
Es muss alles UTF-8 sein. Header, content type... auf der Website wo du dein Formular abschickst. In MySQL DB Kollation eg utf8_general_ci und Connection:
mysqli_query($db, "SET NAMES 'utf8'");
oder
$mysqli->set_charset("utf8");
Vielen Dank
Das hier war die Lösung :)
$mysqli->set_charset("utf8");
PHP mit SQL und HTML zusammen so zum laufen zu bekommen, überfordert viele Einsteiger.
Normalerweise solltest du alles in UTF-8 kodieren, aber da PHP damit von Hause aus nicht komfortabel umgehen kann, bleibt dir nur, dich durch die Server- und DB-Einstellungen zu kämpfen, und alle Kodierungen auf einen Nenner zu bringen.
Wenn du auf Nummer sicher gehen willst, dass deine Umlaute überall richtig angezeigt, korrekt in der DB gespeichert, von PHP nicht verhunzt und in der HTML-Seite korrekt angezeigt werden können, dann bleibt dir eigentlich nur das gute alte ASCII als Kodierung und die Verwenddung von Entities oder Escape-Sequenzen in HTML. Aber das ist eigentlich Pfusch.
Und deine aktuelle Lösung mag im Moment zwar lokal bei dir funktionieren, wird bei einem Serverumzug aber garantiert größere Probleme verursachen.
Bitte informiere dich genau, wie PHP und MySQL zusammen arbeiten, und wie man eine Unicode-Kodierung fehlerfrei aufsetzt, die auch im HTML ohne bsondere Header auskommt. Alles andere ist auf Dauer nur Frickelei.
Viel Erfolg! :)