SQL: Eintrag mit Umlauten ist falsch dargestellt?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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.


TimMagFussball 
Beitragsersteller
 15.08.2018, 21:20

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

regex9  15.08.2018, 21:32
@TimMagFussball

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.

regex9  15.08.2018, 21:51
@TimMagFussball

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).

TimMagFussball 
Beitragsersteller
 16.08.2018, 08:13
@regex9

die ist UTF-8 und bei UTF-8-BOM dasselbe. auch mit der zeile noch das problem

regex9  16.08.2018, 13:01
@TimMagFussball

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


TimMagFussball 
Beitragsersteller
 15.08.2018, 21:19

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 !