跳至主要內容

去除掉文字前的 UTF8-BOM (string.strip_utf8_bom)

聲明

處理後文字 = string.strip_utf8_bom(處理前文字)

參數

  • 處理前文字
    文字型,需要剔除掉 UTF8-BOM 字元的文字

回傳值

  • 處理後文字
    文字型,返回已經剔除掉 UTF8-BOM 字元的文字

說明

UTF8-BOM 的表現形式是文檔開頭的三個看不見的字元 "\xEF\xBB\xBF" (在 Lua 原始碼中,字串中 \x 開頭,後面跟兩位 16 進制數表示以該數字編碼的單個位元組。例如:\x58 表示 X 這個字元,可列印字元部分參考《ASCII 編碼》)

範例

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

:上述代碼中使用了非本章函式 sys.alert

小知識

UTF-8 不需要 BOM,儘管 Unicode 標準允許在 UTF-8 中使用 BOM。
不含 BOM 的 UTF-8 才是標準形式;在 UTF-8 檔案中放置 BOM 主要是微軟的習慣(注:將帶 BOM 的小端序 UTF-16 稱作「Unicode」而不加詳細說明,同樣是微軟的習慣)。
BOM(byte order mark)是為 UTF-16 和 UTF-32 準備的,用於標記位元組序(byte order)。微軟在 UTF-8 中使用 BOM 是因為這樣可以將 UTF-8 和 ASCII 等編碼明確區分開,但此類檔案在 Windows 之外的操作系統上可能會引發問題。更多資料可參考 Wikipedia – Byte order mark