Zum Hauptinhalt springen

UTF8-BOM am Textanfang entfernen (string.strip_utf8_bom)

Deklaration

Verarbeiteter_Text = string.strip_utf8_bom(Unverarbeiteter_Text)

Parameter

  • Unverarbeiteter_Text
    Text; Text, aus dem das UTF8-BOM entfernt werden soll

Rückgabewert

  • Verarbeiteter_Text
    Text; Text ohne UTF8-BOM

Beschreibung

Ein UTF8-BOM besteht aus den drei unsichtbaren Zeichen "\xEF\xBB\xBF" am Anfang eines Dokuments (im Lua-Quellcode bezeichnet ein String mit \x gefolgt von zwei Hexadezimalziffern ein einzelnes Byte, das mit dieser Zahl kodiert ist. Zum Beispiel bezeichnet \x58 das Zeichen X; ausdruckbare Zeichen siehe „ASCII-Kodierung“).

Beispiel

txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- Ausgabe "XXTouch, 10"
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- Ausgabe "XXTouch, 7"

Hinweis: Der obige Code verwendet die Funktion sys.alert aus einem anderen Kapitel.

Wissenswertes

UTF-8 benötigt kein BOM, obwohl der Unicode-Standard die Verwendung eines BOM in UTF-8 erlaubt.
UTF-8 ohne BOM ist die Standardform. Ein BOM in UTF-8-Dateien zu platzieren, ist vor allem eine Gewohnheit von Microsoft (Anmerkung: Auch die Bezeichnung von BOM-little-endian-UTF-16 als „Unicode“ ohne nähere Angabe ist eine Gewohnheit von Microsoft).
BOM (Byte Order Mark) wurde für UTF-16 und UTF-32 entwickelt, um die Byte-Reihenfolge (Byte Order) zu kennzeichnen. Microsoft verwendet BOM in UTF-8, um UTF-8 und ASCII eindeutig zu unterscheiden; solche Dateien können jedoch auf Betriebssystemen außerhalb von Windows Probleme verursachen. Weitere Informationen siehe Wikipedia – Byte order mark.