strtolower() mit Unicodes anwenden
Chris
- php
0 Alex0 Chris0 Alex0 Der Martin
Hallo ihr,
ich versuche grade, die Funktion strtolower zu nutzen, wenn auch Umlaute oder andere Unicodes im String enthalten sind.
Das Manual sagt dazu: "Beachten Sie, dass 'Buchstaben' vom Wert locale abhängig ist. Ist z. B. die Voreinstellung für locale "C", werden Sonderzeichen wie Umlaute (ä, ö, ü) nicht umgewandelt."
Wo finde ich diese Voreinstellung für locale? Kann man strtolower() überhaupt sinnvoll nutzen, wenn man weiß, dass die String auch Umlaute enthalten?
Grüße
Chris
Hallo,
Das Manual sagt dazu: "Beachten Sie, dass 'Buchstaben' vom Wert locale abhängig ist.
Dann probier doch mal...
$locale = array('de', 'de_DE@euro', 'deu');
setlocale(LC_ALL, $locale);
echo strtolower('Mäh!');
Alex
Hallo,
Dann probier doch mal...
$locale = array('de', 'de_DE@euro', 'deu');
setlocale(LC_ALL, $locale);
echo strtolower('Mäh!');
m�h!
Das ist die Ausgabe... funktioniert also auch nicht. Kann man den Wert locale eigentlich in der php.ini oder im Apache fest einstellen, oder macht das keinen Sinn?
Gruß
Chris
Hallo Chris,
m�h!
Also bei mir geht's (übrigens auch ohne setlocale). Hast Du das Skript vielleicht in einem anderen Zeichensatz abgespeichert, als es von PHP ausgegeben wird?
Alex
Moin!
m�h!
Also bei mir geht's (übrigens auch ohne setlocale). Hast Du das Skript vielleicht in einem anderen Zeichensatz abgespeichert, als es von PHP ausgegeben wird?
Ich halte es ja nicht für sehr sinnvoll, einen Testcase zu konstruieren, in dem der einzige Umlaut nicht verändert werden muß. Mindestens sollte auch ein großer Umlaut kleingemacht werden.
Allerdings ist diese Locale-Einstellungskiste ein ziemlich übler Mist. Grundsätzlich sollte man bei PHP davon ausgehen, dass alle klassischen Stringfunktionen nur mit ISO-8859-1 zurechtkommen, und dass alle Formen von Multibyte-Strings (wie z.B. UTF-8) immer die mb_*-Stringfunktionen erfordern.
- Sven Rautenberg
Hi,
echo strtolower('Mäh!');
m?h!
Das ist die Ausgabe...
das sieht aber danach aus, als wäre der Quellcode z.B. in ISO-8859-x gespeichert, und dein Server behauptet nun, es sei UTF-8. Dann wäre das in ISO codierte ä ein ungültiger UTF-8-Code, den der Browser mangels besserem Verständnis als Fragezeichen darstellt.
So long,
Martin