Mit den Zeichensätzen ist die Sache (übrigens bei jeder DB) ein bißchen kompliziert:
- die Datenbank besitzt einen Zeichensatz, mit dem sie intern ihre Zeichen darstellt (bei MySQL in my.ini konfiguriert)
- ein Java-Programm besitzt einen Zeichensatz, mit dem es seine Zeichen darstellt (bei Java standardmaessig UTF8)
- die Kommandozeile/Shell des Betriebssystems besitzt ebenfalls ihren eigenen Zeichensatz (z.B. ISO-Latin oder Win1252)
Man sieht immer nur „richtige“ und vor allem dieselben Zeichen, wenn alle Clients denselben Zeichensatz benutzen oder eine Umwandlung in ihren Zeichensatz kennen. Das klappt meist am besten, wenn die DB mit einem möglichst großen Zeichensatz konfiguriert ist (UTF8).
Eine Änderung dieser Einstellung in der my.ini wirkt sich meines Wissens nicht auf bestehende DBs/Tabellen aus. Man sollte also gleich beim Erzeugen der Datenbank UTF8 angeben, wenn man sichergehen will, dass alle Tabellen später UTF benutzen. Die Kommandozeilen-Tools von MySQL sollten ohne besondere Einstellungen mit UTF klarkommen. Ein selbstgeschriebenes Java-Programm sollte auch auf Anhieb und ohne spezielle Einstellungen funktionieren.
Wurde die DB mit iso-latin angelegt, dann kann es sein, dass Umlaute u.ä. nur richtig angezeigt werden, so lange sie mit demselben Programm/Werkzeug bearbeitet werden. Ein Java-Programm hat ein bestimmtes Mapping „seines“ UTF-Zeichensatzes auf den iso-latin der DB. Ein in C programmierter Client hat möglicherweise ein anderes Mapping seines Zeichensatzes auf iso-latin. D.h., Daten, die mit einem Client eingefügt wurden, können mit einem anderen Client unterschiedlich angezeigt werden.