dedlfix: umlaute

Beitrag lesen

echo $begrüßung;

erstmals - danke für die neuen stichwörter

Dabei gibt es doch im MySQL-Handbuch (leider etwas versteckt unter Internationalization and Localization das Kapitel Character Set Support.

Neuere PHP-Versionen kennen mysql_set_charset(), ansonsten nimm ein "SET NAMES"-Statement.
ich wollte bei php 4 bleiben - ist es denn nicht möglich die verbindungskodierung dauerhaft einzustellen? zuvor kam ich immer ohne aus >-<

"Ohne" gab es zu keinem Zeitpunkt. Eine Kodierung ist beim Abbilden von Zeichen in der EDV immer vorhanden. Da stimmte vielleicht zufälligerweise die Voreinstellung mit deinem Bedarf überein, oder eine Abweichung hat sich zufälligerweise nicht negativ ausgewirkt. Und ja, man kann die Voreinstellung ändern, wenn man den MySQL-Server konfigurieren darf. Wenn die Scripte nachher beim Provider laufen sollen, ist das eher schlecht möglich. Wenn man seine Scripte ordentlich organisiert hat, ist das SET NAMES nur an einer einzigen Stelle hinzuzufügen. Wenn man hingegen Datenbankzugriffe überall verteilt hat, rächt sich das nun mit Mehraufwand für das Nachtragen an allen Stellen.

Als Voreinstellung lässt sich nur character-set-server einstellen. Davon leitet sich ab:

  • character_set_client
  • character_set_connection und
  • character_set_results

Diese drei sind für die Verbindungskodierung relevant und werden bei einem SET NAMES eingestellt. (Die genaue Bedeutung bitte im oben verlinkten Kapitel nachlesen.) Es ist aber auch character_set_database betroffen, was aber nur eine Default-Einstellung für neu erstellte Datenbanken ist. Die Datenbankeinstellung ihrerseits ist eine Default-Einstellung für neu erstellte Tabellen, die eine Default-Einstellung für neue Felder ist. Und die hat dann erst Auswirkungen auf die im Feld speicherbaren Daten.

Alternativ gibt es noch init_connect, mit dem man ein Statement konfigurieren kann, das bei jedem Connect ausgeführt wird.

echo "$verabschiedung $name";