Seite 1 von 1

Zeichencodierung UTF-8 trotzdem keine Umlaute

Verfasst: 22.07.2012, 09:03
von KarakTzorn
Grüßt euch,

meine Website ist mit PHP und MySQL realisiert und ohne .htaccess welches Provider-mäßig auch nicht zugelassen wird. Ich habe mich dazu entschieden die Zeichencodierung UTF-8 zu verwenden.

folgende ist auch getätigt:

Im PHP Header

Code: Alles auswählen

header("Content-Type: text/html; charset=UTF-8");
Im HTML-Code

Code: Alles auswählen

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Im CSS

Code: Alles auswählen

@charset "utf-8";
Und in der MySQL-Datenbank ist auch "UTF-8 Unicode (utf8)" eingestellt. Ebenfalls ist bei der Kollation der MySQL-Verbindung und Tabellen "utf8_unicode_ci" ausgwählt.

Die PHPinfo zeigt ebenfalls unter:

Code: Alles auswählen

_SERVER&#91;"HTTP_ACCEPT_CHARSET"&#93;    UTF-8,*;q=0.5
Trotzdem zeigt die Website die Umlaute die von der Datenbank abgerufen werden nicht korrekt an. Umlaute direkt im HTML werden korrekt dargestellt. Nur bei abfrage aus der Datenbank wird die Ausgabe falsch dargestellt. Was kann jetzt noch falsch sein?[/code]

Verfasst:
von

Verfasst: 22.07.2012, 10:05
von Melegrian
Wichtig ist in jedem Fall, eine bearbeitete Seite im Editor auch unter UTF-8 ohne BOM zu speichern. Ein Dokument nur mit UTF-8 zu definieren bringt nichts, wenn es dann als ANSI-Dokument gespeichert wird, was sich auch auf ein Formular beziehen kann, welches bei der Speicherung auf die DB zugreift. Bei Formularen benutze ich deshalb auch ganz gern:

<form ... ... accept-charset="...">

Nun gut, da die Darstellung in der DB richtig ist, so wird es wohl mehr die Ausgabe bzw. die ausgebene Datei betreffen. Du könntest für die Ausgabe einmal utf8_encode() und einmal utf8_decode() benutzen, nur um zu testen, ob sich etwas ändert. Wenn keine von den beiden Funktionen eine vernünftige Ausgabe bewirkt, könnte es sich auch um eine Doppelkodierung handeln.

Der Titel ist nicht ganz ernst zu nehmen:

https://www.danisch.de/blog/2011/11/18/ ... rschlagen/


Ein älterer Thread: https://www.abakus-internet-marketing.d ... 08004.html

Verfasst: 22.07.2012, 10:42
von KarakTzorn
Grüß Dich,

danke für die Hilfe. Ich habe das Problem jetzt gelöst. Folgender zusätzlicher Code nach dem aufbau der Datenbankverbindung zeigt Umlaute korrekt an:

Code: Alles auswählen

$db->query&#40;"SET NAMES 'utf8' COLLATE 'utf8_general_ci'"&#41;;

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 26.07.2012, 06:12
von nerd
du solltest mysql_set_charset() verwenden.
"This is the preferred way to change the charset. Using mysql_query() to set it (such as SET NAMES utf8) is not recommended." -> https://php.net/manual/en/function.mysq ... harset.php

Verfasst: 26.07.2012, 16:03
von KarakTzorn
Hey nerd,

thx. Ham wah macht !! Funktioniert och.