星期四, 5月 18, 2017

BOM break iconv

BOM, byte-order mark 是用來標示 Unicode 檔案的記號。例如我們常用的 UTF-8 文字檔,前三碼應該會是 EF BB BF,在 Linux / Mac Terminal 可以這麼看:
  • xxd fileName | head -n 1
這種檔案要交給 iconv 轉碼會遇到問題,例如:
  • iconv -f utf8 -t big5 fileName > fileName.big5
  • iconv: fileName:1:0: cannot convert
所以要先去頭三碼:
  • mv fileName fileName.bom
  • tail -c +4 fileName.bom > fileName
再轉碼就可以了。但有時候是需要反過來,為轉碼結果補 BOM,可以這麼做:
  • echo -ne '\xEF\xBB\xBF' > fileName.utf8
  • iconv -f big5 -t utf8 fileName.big5 >> fileName.utf8
[2017/06/02]
在中文版 Windows 要一次將許多 Big5 編碼的文字檔轉成 UTF-8 編碼,可參考這篇以 Powershell 解答的作法。

沒有留言:

張貼留言