BOM (byte-order mark) 中文叫:位元組順序記號,主要是 Windows 標示這是 UTF-8、UTF-16.. 來判別使用的。
想要讓 Windows 的 Excel 開啟 UTF-8 的檔案自動選對編碼(不會亂碼),就需要增加 UTF-8 的 BOM。(不然就得用 插入資料 選擇編碼的方式)
Linux CLI 對 UTF-8 檔案增加 BOM 怎麼做
BOM 在各種編碼會有各種代表,詳見:位元組順序記號
- UTF-8 的 BOM 是 EF BB BF
- UTF-16(BE) 的 BOM 是 FE FF
- UTF-16(LE) 的 BOM 是 FF FE
- 其它 UTF-32.. 更多的,在自行參考上述連結。
於 Linux CLI 要對檔案增加 UTF-8 的 BOM,可以使用 sed 達成。(BOM 一定要在檔案開頭第一行的位置)
- 單一檔案 sed 增加 BOM 範例
- sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' test.csv
- file test.csv # UTF-8 Unicode (with BOM) text
- sed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' *.csv # 對所有 csv 都增加
- 註:此 sed 寫法是沒有 BOM 就新增寫入,有 BOM 就再蓋掉 BOM,所以 BOM 不會重複新增