Henry: strtolower niemals nutzen, veraltet?

Beitrag lesen

Hallo dedlfix,

Nun weiss ich zwar, dass strtolower keine Umlaute umwandeln kann, hatte aber erwartet, dass diese dann dennoch normal erscheinen.

Du hast da wohl einen Fehler im Versuchsaufbau. Die betroffenen Umlaute sind ja bereits Kleinbuchstaben, da hätte weder strtolower() noch mb_strtolower() etwas zu tun gehabt. Ich kann das Fehlerbild nur nachvollziehen, wenn der PHP-Code und somit das Stringliteral gemäß ISO-8859-1 kodiert ist und dem Browser gesagt wird, es käme UTF-8, beispielsweise durch die ini-Direktive default_charset.

Da hätte ich jetzt eher vermutet, dass strtolower auch nicht damit zurecht kommt, wenn es Umlaute in Großschrift oder Kleinschrift sind, sozusagen das gar nicht erkennen kann und dann nicht zu interpretieren weiss.

Aber es kommt noch seltsamer. Hatte das alles lokal probiert und nach euren Ausführungen "ist eigentlich so nicht möglich" das auch mal hochgeladen. Und siehe da (überrascht) Online funktioniert alles ohne Hieroglypen.

Lokal:

der sch�fer h�tet die schafe
urlencode vor:
Der+Sch%C3%A4fer+h%C3%BCtet+die+Schafe
und danach:
der+sch%E3%A4fer+h%E3%BCtet+die+schafe

Online (gleiche Datei)

der schäfer hütet die schafe
urlencode vor:
Der+Sch%C3%A4fer+h%C3%BCtet+die+Schafe
und danach:
der+sch%C3%A4fer+h%C3%BCtet+die+schafe

Gib doch mal vor und nach dem strtolower() die Strings mit echo urlencode($str); aus. Damit sieht man die Kodierung der Umlaute sehr einfach.

Bin nicht sicher wie du das jetzt meinst. Habe urlencode genutzt und bei der lokalen Variante ist es halt %E3%A4, was anscheinend kein zuzuordnendes Zeichen ist.

Bin mir aber auch nicht sicher, dass das hier bei jedem gleich angezeigt wird, daher nochmal ein Screenshot:

Prinzipiell muss zum einen ein verarbeitendes System mit der verwendeten Kodierung umgehen können, zum andern muss ein Nachfolgesystem die verwendete Kodierung mitgeteilt bekommen. Und die Zeichen müssen dementsprechen korrekt kodiert sein. Der Teufel steckt im Detail, wie man das den jeweiligen Systemen einzustellen beziehungsweise mitzuteilen hat.

Scheint so, denn obwohl alle Dateien UTF-8 sind, Browser unicode anzeigt, sollte man doch meinen dürfte keine Probleme geben. Offenbar aber doch, wenn der Buchstabensalat nur auf der lokalen Version passiert.

Gruss
Henry

--
Meine Meinung zu DSGVO & Co:
„Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“