Bernd Lutz: Umlaute auf Windows/Mac und PHP

Hallo,
seit ein paar Tagen programmiere ich nun auf Mac OS X. Bei der Umstellung sind mir einige Probleme mit den Umlauten aufgefallen. Vielleicht könnt ihr mir helfen.

1. Im Editor werden Umlaute als "sehr seltsame Zeichen" dargestellt. Der Browser hat nun auch Probleme die Umlaute darzustellen, obwohl die Darstellung unter Mac OS X richtig war, als ich die Dateien direkt auf den Server kopiert habe. Hängt das mit der "Text Encoding" zusammen?

2. PHP arbeitet sehr schlecht mit Umlauten. Z.B. str_replace("ä", "ae", "Mäc") geht nicht. Unter Windows war das glaube ich möglich.

mfg
Bernd

  1. Moin!

    seit ein paar Tagen programmiere ich nun auf Mac OS X. Bei der Umstellung sind mir einige Probleme mit den Umlauten aufgefallen. Vielleicht könnt ihr mir helfen.

    Ja, nicht nur, weil es eine ähnliche Frage vor kurzem schon einmal gab.

    1. Im Editor werden Umlaute als "sehr seltsame Zeichen" dargestellt. Der Browser hat nun auch Probleme die Umlaute darzustellen, obwohl die Darstellung unter Mac OS X richtig war, als ich die Dateien direkt auf den Server kopiert habe. Hängt das mit der "Text Encoding" zusammen?

    Du meinst den Zeichensatz. Natürlich hängt es davon ab, in welchem Zeichensatz die Datei gespeichert ist und für welchen Zeichensatz der Editor die hält; unter Linux wird häufig Isolatin-1 aka. ISO-8859-1 verwendet, während Windows windows-1252 o.ä. bevorzugt und auf einem Mac MacRoman der Standard darstellt. Am Besten fährst du, nicht nur deshalb, sondern auch, weil du sämtliche bekannten Sonderzeichen benutzen kannst, mit UTF-8.

    1. PHP arbeitet sehr schlecht mit Umlauten. Z.B. str_replace("ä", "ae", "Mäc") geht nicht. Unter Windows war das glaube ich möglich.

    Das hängt davon ab, in welchem Zeichensatz in beiden Fällen das 'ä' geschrieben ist, wenn du zweimal ein UTF-8-ä hast, wird str_replace die Ersetzung erfolgreich durchführen.

    Du kannst natürlich auch alle Umlaute und Sonderzeichen von Hand á la &#xXXXX; kodieren, wenn du möchtest.

    Viele Grüße,
    Robert

  2. Hi Bernd,

    1. PHP arbeitet sehr schlecht mit Umlauten. Z.B. str_replace("ä", "ae", "Mäc") geht nicht. Unter Windows war das glaube ich möglich.

    Diese Erfahrung habe ich kürzlich auch gemacht - allerdings mit geringfügig anderen Umständen: In einer UTF-8 enkodierten PHP-Datei stand sinngemäß folgendes:

    $string = "Er ist dämlich.";  
    echo str_replace("ä", "ä", $string);
    

    Das Ergebnis war stehts nur Murks, irgendwie kommt PHP (noch?) nicht damit klar, zum gewünschten Ziel hat jedenfalls das hier geführt:

    $string = "Er ist dämlich.";    // Weil PHP-Datei UTF-8 kodiert, ist  
                                    // auch dieser String UTF-8 kodiert  
    $string = utf8_decode($string); // UTF-8 dekodieren  
    echo str_replace(chr(228), "ä", $string);  
                                    // und Ersetzen mit nicht UTF-8 kodierten  
                                    // Schriftzeichen durchführen
    

    Eleganter lösen ließe sich das vermutlich mit der Multibyte String Extension, so man sie denn installiert hat - hab sie allerdings noch nie verwendet.

    MfG, Dennis.