Sebastian Becker: Sonderzeichen in externen Dateien

Beitrag lesen

Hallo, dedlfix,

echo utf8_decode(file_get_contents('keywords.inc.php'));
Das Ergebnis ist immer noch dasselbe ...
Das sieht mir recht verkorkst aus. Am Anfang ist eine BOM (Byte Order Mark) zu sehen, aber von den Umlauten ist jede Kodierung verlorengegangen.

eine Byte Order Mark sehe ich zurzeit nicht - ich hatte das Phänomen aber auch schon ...

Wenn ich mir die keywords.inc.php direkt ansehe, dann erhalte ich einen Text, den ich als ISO-8859-1 kodiert bezeichnen würde. Wenn man diesen als UTF-8 zu lesen und nach ISO-8859-1 umzuwandeln versucht geht das natürlich in die Hose.

Das habe ich ja erst aufgrund Deiner Überlegungen gemacht - mit include() geht es aber wie gesagt genauso wenig.

Was mich jetzt noch interessiert: Wo kommt die BOM her? Durch das utf8_decode() kommt sie nicht rein. Steht sie vielleicht in der includetest.php vor dem echo... ?

Nein, da steht nichts außer ...

// include 'keywords.inc.php';
echo utf8_decode(file_get_contents('keywords.inc.php'));

Ich setze die Kommentarzeichen jetzt wieder vor die erste Zeile.

Dein Server sendet übrigens keine Kodierungsangabe im HTTP-Header mit. Durch diese BOM versucht der Browser das Dokument als UTF-8 zu interpretieren. Und ob im weiteren Verlauf nun ISO-8859-1-kodierte oder verkorkste Umlaute gesendet werden spielt dann keine Rolle mehr. Beides liefert Datenmüll.

Das BOM ist möglicherweise der Knackpunkt - aber ich habe keine Ahnung, wo das herkommt. Am Server kann es entgegen meinen ersten Vermutungen eigentlich nicht liegen, da der Effekt bei drei verschiedenen Hostern auftritt.

Der Ultraedit zeigt in der Statuszeile rechts neben der Cursorposition an, welche Kodierung gerade verwendet wird. DOS/UNIX ist das Zeilenende-Verhalten und das U oder U8 davor wäre dann ein Unicode/UTF-8-Modus. Über Datei->Konvertieren kann man einiges umstellen.

Die Anzeige habe ich zwar nicht gefunden und das Umkodieren von UTF-8 nach ASCII hat nichts gebracht. Ich hatte übrigens vorher das File auch einmal mit Notepad abgespeichert - dann sollte Unicode eigentlich verloren gehen ...

Meine Meinung: Wirf die BOM raus, stell alles auf ISO-8859-1 (UltraEdit: ASCII) um, wenn keine zwingenden Gründe für Unicode/UTF-8 vorliegen.

Leichter gesagt als getan. Woher kommt nur diese blöde BOM???

Grübelnde Grüße,

Sebastian