SQL: Eintrag mit Umlauten ist falsch dargestellt?
und zwar habe ich ein input und der Text kommt in meine DB. aber die umlaute werden nicht übernommen, ü ist z.B. ü in der datenbank. Kodiert ist mit utf8_unicode_ci. die Spalte ist varchar.
5 Antworten
Setze zuvor die Zeichenkodierung explizit via SQL Request:
mysqli_query("SET NAMES utf8");
Stelle zudem sicher, dass die Daten im PHP-Skript in ihrer Kodierung auch noch richtig sind. Lasse sie dir testweise ausgeben, bevor du einen Request an die Datenbank schickst.
Wenn du es ausgibst, sind die Umlaute immer noch so komisch? Könnte auch an phpMyAdmin liegen. Gib es doch z.B. in PHP oder so aus, was du halt programmierst. Welche Sprache ist es denn
Womit speicherst Du die Daten in der Datenbank und womit betrachtest Du sie?
Beim Erstellen einer Datenbank muss gleich zu Beginn die Frage mit dem verwendeten Zeichensatz und der Codierung der bereitgestellten und auszugebenden Daten geklärt werden. Das sollte schon in der Testphase erfolgen. Ansonsten gibt es mit den Umlauten ewig Probleme. Der Zeichensatz sollte auch mit dem verwendeten PC übereinstimmen, sonst kann man die von der Datenbank ausgegebenen Daten nicht mit dem bordeigenen Editor anschauen.
UTF-8 - Problem ...
1. Check, wie die Daten in der Tabelle TATSÄCHLICH abgespeichert sind, öffne dazu die Tabelle entsprechend z.B mit phpMyAdmin
Stehen die Daten dort FALSCH drin, d.h. mit ü anstatt Ü dann beachte man(n) folgendes:
- PHP- und HTML- Dateien im als “UTF-8 ohne BOM” speichern
- http Header Content- Type mit UTF-8 verwenden
header('Content-Type: text/html; charset=UTF-8');
Auf der Ausgabe-(Anzeige) Seite:
Wähle das richtige Charset aus (UTF-8)
<meta charset="utf-8"> oder
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Der Zeichensatz der Datenbanktabelle selbst sollte natürlich auch entsprechend auf UTF-8 (utf8_unicode_ci) stehen !
Stehen die Daten korrekt in der SQL Tabelle, dann hast du die Ausgabe Seite nicht korrekt berücksichtigt !