Hallo Tom,
tja, das ist eigentlich schon ein interessantes Thema.
Es ist nämlich auch so, das fast in allen Anleitungen und Tutorials die ich gefunden habe, immer nur die Umstellung von PHP (also Header UTF8), dann noch SET NAMES .., des MySQL Servers und vielleicht noch des Apache erwähnt werden.
Die ganze Problematik wie ich sie nun erlebt habe, also mit Datei- und Verzeichniszugriffen wird fast nie erwähnt.
Auch sehr wenig Hinweise gibt es, das es mit den "alten" String Funktionen Probleme geben kann.
Ich denke wenn man weiss das das ganze System, also die Webanwendung mit Apache und PHP und auch MySQL auf UTF8 laufen und auch so bleiben, könnte man ja schon alles ändern und anpassen.
Die Frage stellt sich mir: Könnte man es auch so hinbekommen, dass alles sowohl mit ISO bzw. latin1 läuft als auch UTF8?
z.b. habe ich z.b. einige str_len Funktionen die die Länge eines Wortes das aus der DB kommt, ermittelt.
//$len_filename = strlen($row['FileName']);//vorher
$len_filename = mb_strlen($row['FileName'], 'utf8');
Das habe ich jetzt geändert auf mb_strlen weil die Zeichenanzahl nicht mehr stimmte, wenn Umlaute drin waren.
Jetzt weiss ich das die DB in UTF8 läuft. Was aber wenn jemand alles wieder auf ISO umstellt?
Wie würdest du denn vorgehen?
PS: echo "der zeichensatz ist " . mb_internal_encoding();
bringt bei mir die Ausgabe:
der zeichensatz ist ISO-8859-1
aus was bezieht sich aber die Funktion? Auf den Zeichensatz des Betriebssystems? Alle meine Scripte laufen ja auf UTF8.
Ich habe im Manual nichts dazu gefunden?
ausprobieren! Du wirst sehen, dass es nur für Code(s|points) unterhalb 128 egal ist, weil dort die Definitonstabellen deckungsgleich sind.
Ich werde es mal ausprobieren und vielleicht mal alles wieder auf ISo umstellen, die UTF_decode und ms_string Funktionen drinlassen.
vielen Dank und viele Grüße
hawk