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.