dedlfix: wieviel Bytes hat ENUM?

Beitrag lesen

echo $begrüßung;

Muss ich denn nun noch 'was verstellen, damit ich die Tabellen nicht demoliere?

Zum einen ist die Angabe zur Kodierung (Kollation interessiert hier nicht) des einzelnen Feldes maßgeblich, was für Zeichen darin abgelegt werden können. Zum anderen ist MySQL darauf angewiesen, vom Client korrekt kodierte Daten geliefert zu bekommen. Die Kodierung sollte nach dem Verbindungsaufbau mit der MySQL-Client-API-Funktion mysql_set_character_set() eingestellt werden. Für die ISO-8859-Familie und UTF-8 reicht auch ein SET-NAMES-Statement (dem man den Namen der Kodierung auch ohne Anführungszeichen angeben kann).

Für die Client-zu-Server-Datenübertragung sind die Einstellungen character_set_client und character_set_connection und für den Rückweg character_set_results zuständig. Alle drei werden mit SET NAMES auf den gleichen Wert gesetzt. Es gibt auch noch SET CHARACTER SET, aber das setzt character_set_connection auf den Wert von character_set_database. Wenn character_set_connection auf Latin1 steht und man ansonsten mit UTF-8 hantiert, gibt es Datenverlust bei Nicht-Latin1-Zeichen. Das Handbuch-Kapitel Connection Character Sets and Collations beschäftigt sich mit dem Thema. (Latin1 ist nach MySQLs Auffassung übrigens Windows-1252. Besser ist's - gibt weniger Knatsch, wenn die Anwender Windows-1252 statt Latin1 senden.)

echo "$verabschiedung $name";