dedlfix: UTF8 und PHP

Beitrag lesen

Hi!

Warum, vielleicht fütterst du die Datenbank mal richtig und mal falsch.
Ähm, so viel Vertrauen darfst du durchaus auch noch in nen Fremden haben.

Die Fragen hier im Forum zu diesem Thema zeigen immer wieder, dass man dieses Vertrauen nicht haben kann, weil immer wieder zwar die Feldkodierung gefunden und eingestellt wird, aber nicht bekannt ist, dass man nach dem Verbindungsaufbau die Kodierung aushandeln sollte, die man zu verwenden gedenkt, sonst nimmt der Server eienn Defaultwert und das kann chaotisch werden.

Ich würde dieses Statement nicht machen, wenn der Aufbau der Verbindung nicht immer gleich erfolgen würde. (Wobei noch dazukommt, dass sogar in der gleichen Abfrage im gleichen Resultat manche Felder richtig(ö), andere falsch(?) kodiert sind. Genauso bei Ansicht in phpMyAdmin. Jetzt überzeugt? )

Der PMA macht es üblicherweise richtig, er verhandelt die Verbindungskodierung. Wenn du darüber Daten einpflegst und mit deinem Programm ausgelesen falsch siehst, dann hast du deine Verbindungskodierung nicht ausgehandelt und bekommst die Datein in einer Kodierung, die du nicht erwartest. Wenn du ? bekommst, dann ist bei der Umkodierung ein Datenverlust aufgetreten, weil ein bestimmtes Zeichen mit Zielkodierung nicht kodiert werden kann.

Wenn du andererseits eine Kodierung verwendest und MySQL aufgrund einer Default-Einstellung eine andere annimmt, kann es natürlich aus dem Bytestrom nicht die richtigen Zeichen interpretieren. Als Folge siehst du im PMA was falsches, weil MySQL es aufgrund deiner nicht erfolgten Verbindungskodierungsaushandlung nicht besser weiß.

Wenn jetzt jemand deinen Aussagen bezüglich Richtigmachens Glauben schenken soll, müsstest du mal bestätigen, dass du mysql(i)_set_charset() oder ein "SET NAMES"-Statement nach jedem Verbindungsaufbau ausführst, dass genau deine verwendete Kodierung einstellt. Dann hätte man in diesm Punkte Klarheit und kann nach anderen Fehlerursachen suchen.

Lo!