dedlfix: Zeichensätze UTF8 oder Latin

Beitrag lesen

echo $begrüßung;

Wenn die Seite, auf der sich das Formular befindet, utf-8 codiert ist,

Es reicht nicht, einfach nur irgendeine Kodierung zu verwenden. Wichtig ist, dass man dem Empfänger mitteilt, welche Kodierung verwendet wurde. Dazu gibt es für HTTP die Zusatzangabe zum charset im Content-Type-Header. Als Ersatz gibt es im HTML eine Meta-Element-Angabe. Vorrang hat der HTTP-Header, doch lokal abgespeichert gibt es den nicht, sondern nur noch die Meta-Element-Angabe. Es ist also günstig, beides zu verwenden.

die entsprechende Tabelle auf utf-8 eingestellt ist

Wenn du damit die MySQL-Tabelle (mit MySQL ab Version 4.1) meinst, dann ist das im Prinzip unwichtig. Das ist, genauso wie die Angabe zur Kollation für die Datenbank, nur ein Default-Wert, der für neu hinzugefügte, untergeordnete Elemente herangezogen wird, wenn für diese nicht explizit etwas eingestellt wurde. Am Ende zählt allein die Kodierung des einzelnen Feldes. Es kann sogar für jedes Feld eine andere Kodierung eingestellt werden.

Außerdem sollte bei der Kommunikation mit einem MySQL-Server eine Kodierung explizit ausgehandelt werden (mysql_set_charset() oder zur Not SET NAMES). Ansonsten kann es zu den von dir weiter unten angedeuteten Problemen kommen.

und das Formular mit
<form action="/cgi-bin/auswertung.pl" method="post" accept-charset="utf-8">

Mir ist noch kein System begegnet, dass diese accept-charset-Angabe noch benötigt, wenn mindestens eins von beiden (HTTP-Header oder Meta-Element-Angabe) gesetzt ist.

eingeleitet wird, dütfte es eigentlich keine Probleme geben. Wenn Du dann natürlich _direkt_ zB. über phpmyadmin Daten eingibst, _kann_ es zu Problemen kommen.

Wenn man mit einer halbwegs aktuellen Version phpMyAdmin direkt Daten bearbeitet, gibt es keine Probleme. Der PMA hat seine Hausaufgaben gemacht und weiß, wie er richtig mit dem MySQL-Server zu reden hat. Problem ergeben sich nur dann, wenn auf anderen Wegen eine Kommunikation mit dem MySQL-Server stattfindet, bei der vergessen wurde, sich auf eine zu verwendende Kodierung zu einigen.

echo "$verabschiedung $name";