Hallo,
ich lese eine Datei, die als UTF-8 gespeichert ist, ein:
$inhalt = file_get_contents("URL/seite.html");
Gebe ich $inhalt aus, steht für z.b. die Umlaute ä,ö,.. das "A1/4" Zeichen, das Eurozeichen funktioniert aber.
Logisch, bis auf das Eurozeichen:
- in ISO-8859-1 (PHPs nativem Zeichensatz) ist es nicht enthalten.
- Dafür aber in den Varianten ISO-8859-15 und Windows-1252. Allerdings ist es in diesen Zeichensätzen genau 1 Byte lang. In UTF-8 ist das Eurozeichen aber drei Byte lang und müsste, als ISO-8859-1 interpretiert, so dargestellt werden: "â<kästchen>¬"[*] Das in der Mitte ist ein Steuerzeichen (BPH), das mir nichts sagt ;).
[*] Das Steuerzeichen durfte ich leider nicht in die Nachricht schreiben.
Interessant wäre jetzt zu wissen, warum ausgerechnet das Eurozeichen korrekt ausgegeben wird.
Ist die abgerufene Seite Deine eigene? Welchen Zeichensatz zeigt Dein Browser an, wenn Du die Seite abrufst (über das Menü "Ansicht" herauszufinden)?
Mache ich utf8_decode($inhalt), stimmen die Umlaute, aber das Eurozeichen nicht.
Als was wird das Eurozeichen dargestellt?
Habe ich nen Denkfehler bei den Umwandlungen?
Da hat sich eher wo anders ein Fehler eingeschlichen.
btw: in welchem Zeichensatz speicherst Du Deine Skripte? Als was werden die ausgeliefert?
Gruß,
David