Hi!
Und "SET NAMES UTF8" als ersten Query nach der DB-Connection gemacht?
Ich habe nun in der Klasse der DB Connection SET Names und SET CHARACTER SET eingefügt:
Seltsam: Niemand hier erwähnt SET CHARACTER SET, und wenn dann nur, um davor zu warnen, dass das Verwenden ohne dessen Wirkung verstanden zu haben, zu Datenverlust führen kann. Trotzdem wird es immer wieder gern als zweites dazugeschrieben. Lass es weg, es sein denn, du weißt genau was du tust, wovon aber nicht auszugehen ist, wenn du es direkt nach SET NAMES verwendest. Beide Statements ändern die selben Werte, überschreiben sich damit gegenseitig, jedoch in unterschiedlicher Weise. SET NAMES will man gemeinhin haben, das andere nicht.
Noch besser wäre aber mysql_set_charset(), wenn dir PHP > 5.2 zur Verfügung steht. Mit kleineren Versionen sollte man heute sowieso nicht mehr arbeiten, wenn man sich das aussuchen darf.
Wenn ich jetzt über ein Formular des Ligascripts einen Eintrag vornehme, dann werden nun in phpMyAdmin und auch im Dump selber die Umlaute richtig dargestellt.
Aber im Script selber werden die Umlaute dieses neuen Eitrags nun nicht richtig dargstellt.
Du musst nach jedem Verbindungsaufbau die Kodierung aushandeln, damit jeder der Beteiligten genau weiß, wie der Bytestrom zu interpretieren ist. Wenn du das auch nur einmal weglässt, wird eine Default-Einstellung verwendet und du bekommt zufällig richtig kodierte Daten oder auch nicht.
Ich denke dies liegt nun an dem Fehler beim Lesen, kannst Du mir da noch einen Tipp geben, wo ich dies richtig einstelle?
Wenn die Daten vom DBMS richtig geliefert werden, was mit einer Kontrollausgabe der Bytewerte und einem anschließenden Vergleich mit einer Kodiertabelle überprüft werden kann, dann hast du vermutlich beim Durchreichen an den Browser was verändert oder nicht richtig deklariert. Das von dir im Eingangsposting erwähnte Meta-Element ist nur ein Ersatz für den gleichnamigen HTTP-Header, der Vorrang vor diesem Meta-Element hat.
(Übrigens ist dieses Thema schon zur Genüge nachgefragt und eigentlich auch erschöpfend im Archiv beantwortet worden.)
Lo!