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.
Setze die Zeichenkodierung auch im HTML-Dokument innerhalb des head-Bereichs als Metatag:
<meta charset="utf-8" />
Ich gehe hierbei davon aus, dass dein Doctype HTML5 vorschreibt.
In welcher Zeichenkodierung ist die PHP-Datei gespeichert? Dies bekommst du heraus, wenn du die Datei bspw. in Notepad++ öffnest und das Menü Kodierung öffnest.
Falls hier eine Umstellung nichts bewirkt, kannst du nochmals explizit den Request Header setzen:
header('Content-Type: text/html; charset=utf-8');
oder generell in der Webserverkonfiguration die Zeichenkodierung festlegen (schau einmal hier).
die ist UTF-8 und bei UTF-8-BOM dasselbe. auch mit der zeile noch das problem
Ist die HTML-Datei ebenfalls im UTF-8-Format? Nimmst du bestimmte Änderungen an den Daten vor, bevor du sie ausgibst?
Poste einmal deinen relevanten Code bei Pastebin.
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
ja, ist sogar so komisch wenn ich vor dem in DB eintragen in der php-datei das POST ausgebe.
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 !
hm ist sogar so komisch wenn ich vor dem in DB eintragen in der php-datei das POST ausgebe. also kein problem bei der DB, .php ist uft-8