BOM entfernen ()
19.04.2009 in: PHP, Trickkiste und Zeichen • 14 Kommentare
Letzte Änderung: 10.12.2014, 19:09 Uhr.
Wie wir wissen, ist UTF-8 die Zeichenkodierung im Internet. Viele Editoren speichern Dokumente in UTF-8 aber mit einem BOM (Byte Order Mark), was zu erheblichen Problemen führen kann, wenn wir die Datei etwa per PHP in eine andere einbinden.
Finden
Ob eine Datei überhaupt ein BOM hat, kann man festellen, indem man sie sich mit einem Hex-Editor ansieht. Ein BOM sieht darin so aus: EFBBEF
. Das können wir hier gleich löschen – und den Rest dieses Artikels überspringen. Manche Editoren versauen dann aber die komplette Datei (PSPad beispielsweise), deshalb seien hier noch andere Wege genannt.
Wer sich zum Betrachten keine zusätzliche Software installieren möchte, kann die Datei auch einfach im Browser öffnen und die Zeichenkodierung der Ausgabe manuell auf ISO-8859-1 festsetzen. Steht ganz oben 
, haben wir ein BOM erwischt.
Entfernen
Gut, wir haben das BOM entdeckt – jetzt müssen wird es irgendwie loswerden.
Linux und Mac OS X
Hier ist es ganz einfach: Wir öffnen die Datei in Vim, geben :set nobomb ein und speichern sie. Fertig.
Windows
Mit Bordmitteln werden wir das BOM – soweit ich weiß – nicht los. Spätestens jetzt müssen wir einen zusätzlichen Editor benutzen, beispielsweise Notepad++: Öffnen, unter Format »UTF-8 ohne BOM« einstellen, speichern, fertig.
Für dieses Programm gibt es auch ein Hex-Editor-Plugin; damit können wir gleich prüfen, ob es geklappt hat.
Ein Tip von Andreas Borutta: Christoph Schneegans bietet ein VB-Script zum Entfernen des BOMs an. Auf der Seite ganz unten die Datei delete-utf8-bom.vbs
herunterladen, auf dem Desktop ablegen und die »bomifizierte« Datei mit der Maus draufziehen – fertig.
In jedem brauchbaren Editor kann man einstellen, daß alle Dateien oder nur bestimmte Dateitypen als UTF-8 ohne BOM gespeichert werden. Wenn dein Editor das nicht anbietet, dann wirf ihn weg.
Boris am 19.04.2009 · 18:03
Öhm ... unter MacOS benutzen sicherlich 99% aller Nutzer mit Sicherheit kein vim ^^
An normalen Boardmitteln gibt es halt Textedit, aber hier kann man nicht explizit angeben, ob mit oder ohne BOM gespeichert werden soll, hm ...
Thomas Scholz am 19.04.2009 · 18:10
Laut macvim.org ist er an Bord (Cem Derin hat mir das per Twitter bestätigt). Und für so eine – hoffentlich einmalige – Aktion sollte er völlig ausreichen.
Ich freue mich aber über jeden weiteren Vorschlag.
unset am 19.04.2009 · 21:02
Mache ich auch gerne noch einmal. Mac OS X kommt per default mit vim (und allen anderen üblichen Unix-Tools).
Boris am 19.04.2009 · 22:59
Ich habe nie behauptet, dass vim nicht "ab Board" wäre - sondern dass es so gut wie kein MacOS User benutzt. Die wenigsten wissen IMHO dass es überhaupt ein Terminal gibt ;)
Thomas Scholz am 19.04.2009 · 23:10
@Boris: Tja, wenn ein BOM die eigene Webseite lahmlegt, ist das vermutlich eine gute Motivation, mal dazuzulernen. ☻
GwenDragon am 20.04.2009 · 11:50
@Boris:
Sicherlich ist der gemeine Mac-User oft resistent dagegen überhaupt etwas anzurühren, was nicht mit der Maus bedienbar ist.
Die meisten wissen nicht, dass MacOSX ein angepasstes UN*X-Derivat ist, geschweige denn was UN*X ist.
Das ist eben das Schlimme, wenn das Denken und Handeln dem Rechner überlassen wird.
Aber das war ja von Apple beabsichtigt, bloss nichts Internes des Systems zu sehen oder was entfernt internes sein könnte.
Oder haben sich die Apple-User heute doch geändert?
unset am 22.04.2009 · 23:57
Eigentlich finde ich Mac Anwendungen recht angenehm mauslos bedienbar.
Was das "handeln und denken dem Computer überlassen" angeht: Beim einem Mac ist es gegenüber den meisten heutigen Linux-Systemen nunmal so, dass alles auf Anhieb geht - und man trotzdem ein vollwertiges Unix-System unter der Haube hat.
Hier muss ich nicht erst hingehen, und irgendwelche Font-Rendering-XML-Dateien hin und herkopieren, nicht freie Quellen zum Paketmanager hinzufügen, um Windows-Standardfonts zu bekommen und mich Wochenlang bemühen, WLAN-Treiber zu finden: Es geht.
Damit will ich ein Debian, ein Suse und ein Gentoo nicht schlecht reden. Aber muss jeder, der einen Rechner bedient auch wissen, wie er funktioniert? Das wäre doch schon etwas arrogant, oder? Ich meine, dann kann man die OLPC-Geschichte ja im Grunde direkt in die Tonne kloppen, denn die Leute, die die Laptops bekommen sollen, wissen teilweise ja noch nicht einmal, dass es soetwas gibt.
Den Spieß umgedreht könnte man auch Fragen, ob du weißt, wie der Motor deines Autos funktioniert. Oder welcher Prozess abläuft, wenn deine PIN mit deiner EC-Karte abgeglichen wird. Oder wie aus der Pasta die du heute Mittag gegessen hast, auf dem Klo plötzlich ... lassen wir das ;) Worauf ich hinaus will: Man kann interesse für diese Hintergrunde aufbringen - man muss es aber nicht. Wichtig ist in erster Linie, dass man für irgendwas Interesse hat, aber man sollte sich von keinem Vorschreiben lassen, für was das sein soll.
Insofern schließe ich mal mit den berühmten Worten ab: Leben und Leben lassen … :-)
Matthias am 24.06.2009 · 00:23
Danke für dieses Blogpost! Ich habe jetzt zwei Stunden an diesem sch...-BOM-Problem gesessen und habe hier die erste und (letztendlich) einfachste Möglichkeit zur Lösung gefunden. Ich sag' aber nicht, ob ich es mit meinem Mac, meiner DOSe oder mit meinem Ubuntu-Linux gelöst habe. Und jetzt macht ihr Kommentatoren mal schön weiter beim fröhlichen Mac/Windows/Linux-Basching.
Thomas Hey'l am 27.12.2009 · 14:27
Update:
Bei neueren Versionen von Notepad++ (Windows) gibt es im Menü "Format" den Eintrag "Konvertiere zu UTF-8 ohne BOM". Der erweist sich als sehr nützlich, um zum Beispiel iso-8859-1-Dateien korrekt umzuwandeln. Der obere Eintrag ändert nur die Codierung beim Speichern, der untere jedoch auch den Dokumentinhalt.
Johan am 26.01.2010 · 16:29
Als kleiner Tipp für die, die VIM zur Verfügung haben, es gibt die Möglichkeit einige Kommandos schon auf der Shell anzugeben. Wenn man sich dafür einen alias baut kann man recht fix auch ganze Directorytrees fixen:
auf der Konsole dann über
delbom myfile.html
bzw.
find . -name "*.html" -exec delbom {} \;
Gruss
Johan
Adnan Özsarigöl am 24.03.2010 · 12:40
Hmm...ich hab den BOM zwar nicht sehen, bzw anzeigen können, aber im Internet war er present.
Wenn ich bei Notepad++ oben auf ISO umgestellt habe, verschwindet der komplette Code. Es ist mir sowieso schleierhaft, wie das passieren konnte, aber der Trick mit der "konvertierung in Utf-8 ohne DOM" bei Notepad++ hat reibungslos funktioniert. Danke auf jeden Fall, da hätt' ich mich sonst dumm und dämlich gesucht^^
Gruß, Adnan
nottinhill am 01.05.2010 · 00:27
Super! Danke für die Anleitung. Funktioniert einwandfrei in MacOSX. In Mac ist vim, nano und alle anderen Unix Tools an Board. Schliesslich ist es Unix. Habe deinen Tipp in meinen Blogpost über BOM unter Windows übernommen http://blog.meshfields.de
Ruslan am 07.09.2010 · 10:47
Das mit dem HEX Editor ist echt eine tolle Sache. Hat mir vie Arbeit erspart!
Vielen Dank ;)
Ulrike am 09.12.2010 · 16:40
einfach super - hierfür möchte ich mich ganz herzlich bedanken!
Ich hatte bereits fast aufgegeben und mich mit meinem bom abgefunden, bis ich diese super anleitung fand, tja: und man bekommt tatsächlich sogar ein optimales werkzeug gleich mitgeliefert (delete-utf8-bom.vbs)
auch diesem kleinen, menschenfreundlichen genie ein großes danke!
huibu ☺