Seite 1 von 1

UTF-8 Funktionen - utf8-decode

Verfasst: 01.06.2009, 10:41
von silent321
Ich habe mich heute mit dem Thema kodierung auseinandergesetzt und habe noch eine grundlegende Frage.

Meine PHP Seite habe ich UTF-8 kodiert und es funktioniert auch so wie ich es möchte, was ich jedoch nicht verstehe ist, dass ich jetzt bei vielen Funktionen wie is_file, filemtime(), touch(), file() ect. ein utf8_decode() benutzen muss wenn im string umlaute vorhanden sind.
Arbeiten diese Funktionen generell nicht mit utf-8, ich verstehe das ganze nicht so ganz?

Im Endeffekt funktioniert nun mein Script jedoch habe ich an vielen Stellen utf8_decode einbauen müssen.

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: UTF-8 Funktionen - utf8-decode

Verfasst: 01.06.2009, 15:03
von Mork vom Ork
silent321 hat geschrieben:was ich jedoch nicht verstehe ist, dass ich jetzt bei vielen Funktionen wie is_file, filemtime(), touch(), file() etc. ein utf8_decode() benutzen muss
PHP ist grundsätzlich nicht in der Lage, ein Zeichen als Zeichen zu behandeln, sondern sieht jedes Zeichen als Zahl bzw. Byte an. Daraus resultieren Probleme, wie du sie gerade hast; bei der Übergabe aus PHP an oder von einem anderen System (hier: Betriebs- bzw. Dateisystem) ist keine transparente Konvertierung vorgesehen, falls dieses System eine andere Kodierung nutzt.

Die Konvertierung in einen schlechteren Zeichensatz, so wie es utf8_decode() mit utf-8 nach iso-8859-1 macht, birgt ein gewisses Risiko, weil dabei zwangsläufig Zeichen verloren gehen oder falsch interpretiert werden; das €-Zeichen ist da ein ganz kritischer Problemfall. So gesehen würde ich dir dringend raten, statt einer Konvertierung an solchen Stellen nur US-ASCII zuzulassen, bestenfalls eine automatische Konvertierung der Umlaute in ae etc. durchzuführen und alles andere strikt zurückzuweisen.