Und mit welchem Zeichensatz korrespondiert phpmyadmin mit der Datenbank?
Wo kann man die "Korrespondenz" sehen?
Ich bin der Meinung, dass der aktuelle Zeichensatz der Datenbank irgendwo gleich eingangs angezeigt wird (und sich auch ändern lässt). Benutze den Kram aber nicht, insofern musst du selbst ein wenig suchen.
Der Ort in der DB hat Kollation latin1_german1_ci
Das bestimmt erstmal lediglich die Sortierregeln (collation, Deutsch: Textvergleich), nicht unbedingt die Zeichenkodierung. Siehe MySQL-Dokumentation, Zeichensätze und Sortierfolgen.
Habe mit phpmyadmin rausgefunden, dass ein Datensatz die Stadt K�ln und die Strasse Mathias-Br�ggen-Str. hat. Einmal ö, einmal ü, auf gleiche Weise angezeigt.
Wieso denn das nun auf einmal, eingangs schriebst du noch "In der Datenbank habe ich keine Stadt "K?ln", aber 84 mal "Köln", mit phpmyadmin geprüft."?
Eine Ausgabe in dieser Art bedeutet immer, dass ein utf-8-kodierter Datenstrom mit der Kodierung iso-8859-1 dekodiert wird (zB bei der Ausgabe durch PHP) oder wurde (zB beim Import durch MySQL).
� ist die (per iso-8859-1 angezeigte) utf-8-Kodierung des Zeichens fffd, ein Platzhalter für unbekannte Zeichen. Wenn du also tatsächlich � in der Datenbank hast, dann ist beim Datenimport irgendwas schiefgegangen; du könntest zum Beispiel eine iso-8859-kodierte SQL-Datei importiert haben, während MySQL dachte, die Daten seien utf-8-kodiert. Die vermeintlich kaputten Bytes hat MySQL dann mit dem Platzhalter fffd ersetzt.
Habe in phpmyadmin dann diesen gemacht:
update adressen set ort='Köln' where ort='K�ln'In phpmyadmin steht bei diesem Satz nun 'Köln' drin, in meinem Programm weiterhin 'K?ln'.
Gut, das phpmyadmin seine selbst gesetzten Daten richtig anzeigt, ist nicht so verwunderlich.