Geistiger Hohlraum: Euro Zeichen wird nicht erkannt.

Beitrag lesen

Ist utf-8 besser? Sollte ich das verwenden?

Es ist insofern besser, als dass man jedwede Verwechslungsmöglichkeit dergestalt wie Du sie gerade erlebst von vornherein ausschließt. Das wäre zwar auch der Fall, wenn man sich zum Beispiel auf windows-1252 beschränken würde, aber die Unterschiede zwischen windows-1252, iso-8859-1 und iso-8859-15 sind in der Praxis nicht immer auf den ersten Blick zu erkennen.

Es nützt allerdings alles nichts, wenn man utf-8 nicht konsequent von Anfang bis Ende einsetzt. Dabei werden einem allerdings hier und da Steine von Anwendungen in den Weg gelegt, die Strings nicht als Zeichenketten sondern als Byteketten ansehen und/oder mit festen Kodierungen arbeiten. Wer zur Ausgabe in PHP htmlentities() statt htmlspecialchars() + content-type=utf-8 benutzt, wundert sich zum Beispiel, dass statt "Blödmann" "Blijdmann" (oder ähnlich) erscheint. Ohne explizite Angabe der Kodierung nimmt htmlentities() iso-8859-1 an und sieht deshalb statt des zwei Byte einnehmenden Zeichens utf-8-ö die zwei Ein-Byte-Zeichen Ä und ³. An dem gleichen Problem können Sortierfunktionen scheitern.
Weiterhin gilt es zu beachten, dass manche ältere Browser Formulardaten stur mit ihrer 8-Bit-Kodierung schicken anstatt utf-8 zu benutzen. Außerdem gibt es bei der Standardmethode application/x-www-form-urlencoded keine Möglichkeit für den Browser, die von ihm verwendete Zeichenkodierung zu übermitteln. http://www.w3.org/TR/html4/interact/forms.html#h-17.13.3 empfiehlt deshalb multipart/form-data für die Übermittlung von Nicht-ASCII-Daten.

Es ist also nicht so ganz leicht, utf-8 zu benutzen, zumal auf der anderen Seite das windows/8859-Durcheinander vieles verzeiht. Dafür gewinnt man auf lange Sicht Sicherheit und vergrößert ohne Umstände das Einsatzgebiet.