Detail: UTF-8-BOM finden und entfernen

10.05.2010 - UTF-8-BOM finden und entfernen

UTF-8 ist eine Zeichenkodierung, welche Internet oft angewendet respektive benutzt wird. Einige Editoren haben jedoch beim Speichern in UTF-8 das Problem, dass zusätzlich ein BOM (Byte Order Mark) eingefügt wird. Dies führt oft zu erheblichen Problemen, wenn beispielsweise einzelne PHP-Dateien verbunden werden.

Um feststellen zu können, ob sich ein UTF-8-BOM eingeschlichen hat, kann dieses kleine VBScript helfen. Nebenbei sucht es auch nach einem UTF-16-BE-BOM und einem UTF-16-LE-BOM. Die Anwendung ist denkbar einfach. Man benötigt in der Windows-Oberfläche einen Editor. Nehmen wir Notepad, ist ja eingebaut. Der folgende Code wird einfach in den Editor kopiert und als find_BOM.vbs abgespeichert. Nun nehmen wir die Datei, in welcher wir das BOM vermuten und ziehen sie einfach auf die find_BOM.vbs.

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' find_BOM.vbs
' ====================
' kleines Hilfsmittel, welches das BOM finden soll
Const UTF8_BOM = ""
Const UTF16BE_BOM = "þÿ"
Const UTF16LE_BOM = "ÿþ"
Const ForReading = 1
Const ForWriting = 2
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim f
f = WScript.Arguments.Item(0)
Dim t
t = fso.OpenTextFile(f, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
MsgBox "UTF-8-BOM detected!"
ElseIf Left(t, 2) = UTF16BE_BOM Then
MsgBox "UTF-16-BOM (Big Endian) detected!"
ElseIf Left(t, 2) = UTF16LE_BOM Then
MsgBox "UTF-16-BOM (Little Endian) detected!"
Else
MsgBox "No BOM detected!"
End If


Wurde ein BOM entdeckt, müssen wir es eleminieren. Dazu kann folgendes Script verwendet werden. Hierzu benutzen wir wie oben einen Editor und speichern das kopierte Script als kill_BOM.vbs ab. Die Datei, welche das UTF-8-BOM enthält, einfach anklicken und auf die kill_BOM.vbs ziehen. Danach kommt eine Meldung, dass das UTF-8-BOM entfernt wurde.

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.05.10 Vers 1.0
'
' kill_BOM.vbs
' ====================
' kleines Hilfmittel, welches das gefundene BOM löschen soll
Const UTF8_BOM = ""
Const ForReading = 1
Const ForWriting = 2
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim f
f = WScript.Arguments.Item(0)
Dim t
t = fso.OpenTextFile(f, ForReading).ReadAll
If Left(t, 3) = UTF8_BOM Then
fso.OpenTextFile(f, ForWriting).Write (Mid(t, 4))
MsgBox "BOM gelöscht!"
Else
MsgBox "kein UTF-8-BOM vorhanden!"
End If

zurück

Copyright © 2003 - 2011, Heiko Jendreck, All rights reserved
http://www.phw-jendreck.de / Heiko Jendreck; Friedrichstrasse 20; 68782 Brühl