echo $begrüßung;
was ist dann die UTF-8 Kodierung: "U+20AC", "e2 82 ac" ?
Die UTF-8-Kodierung eines € ist eine Byte-Folge mit den hexadezimalen Werten e2 82 ac.
b) %E2%82%AC
b. ein URL-kodiertes UTF-8-kodiertes Euro-Zeichen.
Schön, das tut es auch im Firefox, im IE schickt er aber gleich € ab, irgendwelche Ideen warum?
Mit anderen Worten: Er sendet es, so wie es aussieht UTF-8-kodiert, aber dann nicht nochmal URL-kodiert.
Okay, das ist bei mir der Fall, ich sehe €, wobei ich aber Vermute, dass es schon falsch aus der Datenbank daher kommt, das werde ich aber noch verifizieren
Lass dich nicht von dem täuschen, was du augenscheinlich siehst, weil das bereits von Irgendjemandem interpretiert worden und umgewandelt sein kann. Im Zweifelsfall solltest du dir die Byte-Werte direkt ansehen. Unter PHP beispielsweise kann man sich einen String als Hex-Folge ausgeben, wenn man ihn sich so ausgeben lässt: echo chunk_split(bin2hex($string), 2, ' '); Ansonsten helfen Editoren mit Hex-Modus (z.B. UltraEdit unter Windows) oder andere Hex-Betrachter. Man sollte sich auch immer die Originalwerte ansehen, nicht einfach eine Darstellung kopieren und im Hex-Betrachter einfügen. Da haben schon wieder zu viele Programmteile ihre Finger im Spiel gehabt, die irgendwelche Umwandlungen vorgenommen haben können.
Die Hex-Werte kann man mit einer Code-Tabelle der jeweils gewünschten Kodierung den Zeichen zuordnen, für die sie stehen.
Schau doch mal in den Quelltext dieses Postings, am besten mit dem Firefox. Dort suchst du dir mal eine Stelle, an der das € erwähnt wurde. Schalte nun die Zeichenkodierung (im Menü Ansicht) von UTF-8 auf ISO-8859-1 um. Dann siehst du €. Das wäre dann die UTF-8-Kodierung eines UTF-8-kodierten €-Zeichens, also doppelt gemoppelt. Hier ist das so gewünscht, damit diese Seite, die UTF-8-kodiert ausgeliefert wird auch € und nicht € anzeigt. Wenn du aber ein € auf deiner UTF-8-kodierten Seite siehst, und der Browser sich auch auf UTF-8 gestellt hat, dann ist das auch bei dir irgendwo doppelt kodiert, ansonsten interpretiert der Browser die Seite als ISO-8859-1. (Ich hoffe, dieser Abschnitt hat nicht mehr verwirrt, als er aufzuklären versuchte.)
echo "$verabschiedung $name";
[*] spielt auch eine Rolle. Da kommt das ‚ aus € (e2 82 ac) her, denn ISO-8859-X definiert den Bereich 80 bis 9F nicht.