dedlfix: (LINUX / BASH / MYSQL) Verständnisproblem bei Zeichenkodierung

Beitrag lesen

echo $begrüßung;

Die Daten werden in der JSP-Seite richtig dargestellt. Die Daten werden im MySQL Query Browser ebenfalls richtig dargestellt. Rufe ich die Daten aber über die Bash (Gnome-Terminal) ab, also wenn ich mit mysql schema -u user -p und mit einem select * die Daten aus der DB abrufe, habe ich anstatt der Umlaute nur bemalte Fragezeichen.

Welche Kodierung hast du mit dem MySQL-Server für diese Verbindung ausgehandelt? Wenn keine, wie ist die Default-Einstellung? show variables like 'char%'; Aussschlaggebend für das Ergebnis ist character_set_results. Für das Senden zum Server sind character_set_connection und character_set_client zuständig.

Das Gnome-Terminal habe ich ebenfalls standardmäßig auf UTF-8, aber jetzt kommt's. Schalte ich im Gnome-Terminal auf ISO-8859-15, werden in der MySQL-Tabelle die Umlaute plötzlich richtig dargestellt.

Nicht "in der Tabelle" sondern das was dir der Server liefert. Er liefert stets das Ergebnis in der explizit vereinbarten oder voreingestellten Kodierung. Wenn die gespeicherten Daten in anderer Kodierung vorliegen (Feldkodierungseinstellung) dann kodiert es das in die für die Verbindung geforderte Kodierung um.

(ISO-8859-15 (und auch ISO-8859-1) wäre nicht ganz richtig, MySQLs Latin1 entspricht Win-1252.)

Das Eintippen von Umlauten in der Bash (Gnome-Terminal) funktioniert jedenfalls mit beiden Einstellungen.

Wetten, dass bei einem Daten schreibenden Statement, dem du UTF-8-kodierte Daten mitgibst, Müll in dem Feld landet (genauer gesagt doppelt UTF-8-Kodiertes - zu kontrollieren mit einem, der das Thema Kodierung richtig umsetzt, phpMyAdmin beispielsweise)?

echo "$verabschiedung $name";