去除掉文字前的 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。