Merkwürdige Zeichen in generierten Dateien

05.04.2005

Vor ein paar Tagen hatte ich Probleme mit der Generierung der HTML-Seiten, weil in den erzeugten Dateien merkwürdige Zeichen auftauchten. Es waren keine Zeichen aus dem üblichen Codebereich. Und sowohl Internet Explorer als auch Firefox waren nicht in der Lage, diese HTML-Seiten anzuzeigen.

Testszenario

Das Problem ließ sich nach einigen Tests sehr gut eingrenzen. Letztendlich war das Testszenario so, dass in einer Index-Vorlage eine Modul-Vorlage eingebettet wurde. Und genau an derjenigen Stelle, wo sich der MTInclude befand, entstanden in der generierten Datei diese Zeichen.

Weiterhin fiel mir dann auch noch auf, dass die Zeichen nicht immer erzeugt wurden. Manchmal waren sie da und störten, manchmal war alles in Ordnung.

Ich habe dann recht schnell bemerkt, dass es offensichtlich etwas mit der Bearbeitung der Vorlagen außerhalb des Movable Type zu tun hatte. Immer dann, wenn ich aus der Benutzeroberfläche des Movable Type die Vorlagen gespeichert hatte, funktionierte alles einwandfrei. Wenn ich aber die Vorlagen, welche absolut korrekt mit einer externen Datei verknüpft waren, über einen Editor bearbeitete, dann traten die Probleme auf.

Lösung

Der Verursacher des Problems war das so genannte BOM (byte oder mark), welches von einigen Editoren am Anfang einer zu speichernden Datei eingefügt wird. Ich kannte das BOM bisher gar nicht, musste also etwas im Internet suchen.

Kurze Erläuterung: es gibt den Unicode Zeichensatz. Darin wird durch einen Standard definiert, wie Zeichen auf Zahlen abgebildet werden. Vereinfacht ausgedrückt ist es eine Fortführung alter Standards wie ASCII und ANSI, erweitert um das Ziel, alle denkbaren Zeichen behandelt zu können. Das Unicode kann auf unterschiedliche Weisen repräsentiert werden. Dazu gehören zum Beispiel UTF-8, UTF-16 oder UTF-32. Und dort gibt es spezielles Zeichen, welches sich am Anfang einer in diesen Zeichensätzen codierten Datei befinden kann. Dieses BOM ist eine Bytesequenz, welche nicht als gültiges Zeichen verwendet wird. Seine Existenz kann einem Programm mitteilen, wie die Datei kodiert wurde.

Einige Editoren schreiben kein BOM. Bei anderen kann man optional eines schreiben lassen. Bei NOTEPAD hingegen, und dieses hatte ich in diesem Fall auf dem Windows 2003 Server für eine kleine Änderung der Vorlagendatei verwendet, wird bei einer UTF-8 Datei immer ein BOM geschrieben.

Das Szenario, welches zu den Problemen geführt hatte, war bei mir wie folgt gewesen.

  • Ich hatte über Movable Type eine Modul-Vorlage angelegt. Weil diese Vorlage einige Umlaute enthielt, hatte Movable Type die Datei selbständig als UTF-8 Datei angelegt.
  • Die Modul-Vorlage wurde von anderen Vorlagen eingebettet. Solange ich diese immer nur über die Benutzeroberfläche veränderte, gab es keine Probleme.
  • Sobald ich die Datei dann aber außerhalb mit NOTEPAD bearbeitete, wurde das BOM eingefügt. Beim nächsten Generierungslauf las Movable Type die Datei, ignorierte die Tatsache, dass die ersten Bytes ein besonderes Zeichen darstellen, und fügte den Inhalt der Datei einschließlich des BOM in die generierte Datei ein.
  • Somit gelangte dann ein BOM mitten in eine generierte Datei, wo es in keiner Weise hingehörte.

Die Lösung ist dann natürlich trivial. Man darf einfach keinen Editor verwenden, welcher das BOM schreibt. Beispielsweise bei Edit Plus kann das BOM wahlweise ein- oder ausgeschaltet werden.

Verbesserungsvorschlag

Ich betrachte es als Fehler, dass Movable Type ein BOM am Anfang einer eingebetteten Datei nicht erkennt. Die Generierung sollte merken, dass es sich um eine UTF-8 Datei handelt und dann die spezifischen Merkmale einer in diesem Zeichensatz kodierten Datei beachten. Ich habe das Problem daher an Six Apart gemeldet.

mgs | 05.04.2005

Feedback erwünscht!

Wie fanden Sie den Eintrag? Interessant? Langweilig? Ich freue mich über Ihren Kommentar. Wenn Ihnen der Eintrag geholfen hat, setzen Sie doch einen Link auf http://www.movable-type-weblog.de/.

Bitte keinen Spam

Um das Weblog vor Spam zu schützen, wird das MT-Approval Plugin eingesetzt. Sie müssen einen neuen Kommentar zunächst in der Vorschau ansehen, bevor dieser auf dem Server gespeichert werden kann. Ferner wird ein Kommentar erst gesichtet, bevor er freigegeben wird. Näheres finden Sie in meinem Artikel Weblog Spamming Grundlagen, wo einige Schutzmaßnahmen skizziert werden.

Wenn Sie sich an TypeKey angemeldet haben, wird Ihr Kommentar automatisch freigegeben.

Neuen Kommentar schreiben

TypeKey wurde an dieser Stelle vorübergehend deaktiviert. Erstellen Sie Ihren Kommentar bitte ohne TypeKey oder melden Sie sich im Vorschau-Dialog an.




Angaben speichern (Cookie)?