WordPress Entwickler für Programmierung Ihrer Webprojekte
WordPress Entwickler für Programmierung Ihrer Webprojekte
  • Start
  • Unser Angebot
  • Blog
  • Kontakt
Avatar (Thumbnail) zum Blogeintrag

Byte Order Mark (BOM) macht die Seite kaputt. Was tun?

Federführend von: zauni | 2. April 2024

BOM headers already sent UTF Zeichenkodierung

Was hat es mit der Kodierung und dem Byte Order Mark auf sich?

Damit ein Programm eine Datei korrekt verarbeiten kann, muss es die Kodierung kennen – ein Byte Order Mark stört dabei.

In unseren Breiten und besonders im Internet haben wir es zumeist mit der weit verbreiteten UTF-8 Zeichenkodierung zu tun. Diese Zeichenkodierung kann dabei sehr gut mit Sprachen der westlichen Welt umgehen.

Das Byte Order Mark ist dabei ein Zusatz zur eigentlichen Zeichenkodierung und kommt als erstes Zeichen in einem Dokument vor. Leider wird es von vielen Programmen nicht sehr gut gekennzeichnet. Wir wissen also nicht sofort, dass hier ein leeres Zeichen („U+FEFF“) am Beginn der Datei steht.

Das Bild zeigt einen verzweifelten Benutzer vor seinem Laptop beim Versuch einen Fehler zu beheben.
Byte-order mark legt Website lahm

    Inhalt auf dieser Seite:

  1. Was hat es mit der Kodierung und dem Byte Order Mark auf sich?
  2. Was ist das Problem beim BOM?
  3. Wie kann ich herausfinden, ob es ein BOM in meiner Dateien gibt?
  4. Fehler beheben

Was ist das Problem beim BOM?

Manche Programme können das Zeichen nicht korrekt verarbeiten, weil sie z.B. etwas anderes erwarten.

Und wenn nicht gefunden wird, was sich das Programm erwartet, kann das Programm die Datei nicht verarbeiten. Das passiert z.B. bei Bash-Skripten, die zwingend mit der Zeichenfolge „#!“ beginnen müssen. Wenn hier vor der Raute ein unsichtbares Leerzeichen steht, funktioniert das Skript nicht mehr.

Ähnlich schaut es bei PHP-Dateien aus, die auch mit einem „<?php“ beginnen. Wenn jetzt der Server versucht, so eine Datei zu verarbeiten, wird ein Leerzeichen gefunden und als Zeichen an den Client/Browser geschickt. Das führt dann zum vermutlich recht bekannten Fehler  Cannot modify header information – headers already sent.

Telefon+436603100000
E-Mailsouri@wp-entwickler.at
AdresseWP-Entwickler
Safenauer-Straße 62,
8230 Hartberg

Wie kann ich herausfinden, ob es ein BOM in meiner Dateien gibt?

Dieser Fehler ist sehr ärgerlich, weil nicht sofort ersichtlich ist, warum er überhaupt auftritt.

Bei IDEs wie PHPStorm kann zum Auffinden eines BOMs erstmal die rechte untere Ecke genauer untersucht werden. Hier sollten diese zusätzlichen Informationen zur Datei angezeigt werden. Hier kann man entweder das BOM hinzufügen, oder entfernen.

Das Bild zeigt die Meta-Informationen einer Datei. Im Fokus ist dabei die Zeichenkodierung, die mit UTF-8 ohne Byte-Order Mark gesetzt ist.
Identifizierung des BOMs einer Datei über PHPStorm

Alternativ kann man auch im Terminal folgenden Befehl verwenden: grep -rl $'\xEF\xBB\xBF' .

Fehler beheben

So trivial wie der „Fehler“ auf den ersten Blick erscheint, die Behebung ist es nicht unbedingt.

Das Problem liegt hier in der Unsichtbarkeit dieses Zeichens.

    1. Öffnet die problematische Datei und begebt euch mit dem Cursor in die erste Zeile. Versucht dort mit den Backspace– und Entfernen-Tasten das BOM zu entfernen. Nur das öffnende „<?php“ zu löschen und neu zu schreiben, reicht nicht aus.
    2. Wenn ihr eine IDE oder einen hochwertigeren Editor verwendet, gibt es meist i-wo einen Ort, wo Meta-Infos zur Datei angezeigt werden. Dort kann meist auch die Kodierung der Datei angepasst werden.
    3. Verwendet im Terminal folgenden Befehl:
      • find . -type f -name '*.php' -exec sed -i '1s/^\xEF\xBB\xBF//' {} \; // für Linux
      • find . -type f -name '*.php' -exec sed -i '' -e '1s/^\xEF\xBB\xBF//' {} \; // für MacOS
      • Dieser Befehl sucht alle Dateien mit Endung „.php“ und löscht dabei in der ersten Zeile das BOM

Links und Quellen

  • https://de.wikipedia.org/wiki/Byte_Order_Mark
  • https://stackoverflow.com/a/2858757

Navigation

Start Unser Angebot Blog

Impressum & Kontakt

wp-entwickler.at wird betrieben von

  • wp-entwickler Rene Souri
  • UID: ATU60950509
  • Safenauer-Straße 62
  • 8230 Hartberg

Wir lieben WordPress und freuen uns, mit Ihnen ein Projekt entwickeln zu können!

  • Impressum
  • AGB

wp-entwickler.at ist eine indit.at Division