Der Martin: Führt eine datei.txt die Zeichencodierung (z.B. UTF8) mit?

Beitrag lesen

Hallo,

Im Falle von HTTP allerdings gibt es den Content-Type-Header und der kennt auch ein (optionales) charset-Attribut. Wenn dein Server also dieses Attribut mitgibt, kann der Empfänger auch ohne BOM den Inhalt richtig interpretieren.

korrekt. Und auch wenn das charset-Attribut optional ist, empfehle ich seine Verwendung bei textbasierten Dateiformaten wärmstens.

Wird dieser BOMmel auch von anderen Umgebungen, z.B. Javascript akzeptiert?

Eine BOM wird bei UTF-8 nicht benötigt, weil hier die Bytereihenfolge festgelegt ist.

Ja und nein. Ohne BOM weiß die verarbeitende Software nur: Wenn es irgendeine Unicode-Codierung sein soll, dann UTF-8. Es könnte aber auch so ziemlich jede 1-Byte-ISO-Codierung sein.
Mit BOM, auch bei UTF-8, ist der Fall dagegen klar.

Lästiger Nebeneffekt: Nicht jede Software erkennt die BOM als das, was sie sein soll. Und bei PHP-Dateien, die als UTF-8 mit BOM gespeichert sind, gilt die BOM aus PHP-Sicht bereits als Nutzinhalt. Ein nachfolgendes Senden von HTTP-Headern ist dann nur noch sehr umständlich möglich.

Meine Empfehlung ist daher, vorzugsweise ohne BOM zu speichern und stattdessen lieber andere Methoden zu nutzen (etwa wie erwähnt im HTTP-Header). Nur wenn es zwingend notwendig ist, weil irgendeine Softwarekomponente sonst partout nicht kooperieren möchte, würde ich widerwillig eine BOM verwenden.

Ciao,
 Martin

--
Ein Tag, an dem du nicht wenigstens einmal gelacht hast, ist ein verlorener Tag.