Hallo
Vorneweg: Tut mir leid, mich im Ton vergriffen zu haben. Ich war an dem Tag etwas griesgrämig.
Wenn die Kodierungs-/Kollationsangabe eines Feldes geändert wird, wird dabei auch der Feldinhalt umkodiert. Es gibt danach keine "alten Datensätze".
Ach, und warum wird genau _deswegen_ hier immer wieder nachgefragt? Und warum wird genau für solche Suituationen immer wiederSET NAMES utf8
empfohlen?SET NAMES und die Kodierung der Felder sind zwei verschiedene Dinge. Die Kodierung der Felder ist unabhängig von der Kodierung, die bei der Kommunikation mit einem Client verwendet wird.
Soweit ist das klar.
SET NAMES stellt die Kodierung der Clientverbindung ein. Die hat auch einen Defaultwert. Wenn du nun annimmst, nach der Umstellung der Feldkodierung die Daten in der Feldkodierung zu erhalten ist das ein Irrtum. Für die Verbindungskodierung gilt immer noch deren (vor)eingestellter Wert.
Auch das ist klar. SET NAMES
sagt der DB, dass ich bei allen Abfragen _dieser_ (also der aktuellen) Verbindung einen bestimmten Zeichensatz benutzen will.
Wenn vorher der Inhalt zur Kodierung passte und in eine Richtung umgestellt wurde, die alle ursprünglichen Zeichen repräsentieren kann, dann gibt es dabei auch keine Probleme.
Das habe ich anders erlebt. Da passte eben nach der Umstellung der Kollation garnix.Wenn man ein System nicht verstanden hat, ist es ganz natürlich, dass man Fehler macht.
Ja, sowas kommt vor. Zumal ich gerade in Sachen MySQL so einiges per trial & error probiere, dazulernen einbegriffen (hoffe ich doch mal ;-)). Dein Beispiel war jedenfalls sehr aufschlussreich.
Wenn ich also z.B. per phpMyAdmin die Kollation der DB, der Tabelle und der Felder auf einen anderen Zeichensatz umstelle, werden die Feldinhalte auch umgestellt? Etwaige Inkonsistenzen bei der Ausgabe kommen dann daher, dass der Vorgabewert für den Zeichensatz der Verbindung nicht dem Zeichensatz der Feldwerte entspricht?
Ich hoffe das jetzt richtig verstanden zu haben.
Tschö, Auge