前言

因工作需求,要將政府資料開放平台上的 CSV 檔處理並整合成 XLSX 檔。

由於微軟的 Excel 在讀取 CSV 檔時,需要 BOM 來告知使用何種編碼開啟。

而一般的 CSV 檔不會加上 BOM,macOS 上的 Excel 預設編碼也不是 UTF-8。

故若直接於 macOS 上使用 Excel 開啟 UTF-8 編碼的 CSV 檔,將以亂碼顯示。


終端機添加 UTF-8 BOM

於終端機下指令,對檔案input.csv添加 UTF-8 BOM 並輸出為output.csv

cat <(printf "\xEF\xBB\xBF") input.csv > output.csv

右鍵添加 UTF-8 BOM

每次轉換都要開啟終端機著實不太方便,可透過建立快速動作來實現右鍵添加。

  1. 開啟Automator.app,選擇快速動作→工作流程接收目前的文件,位置:Finder.app

  2. 雙擊左面板工具程式中的執行 Shell 工序指令以添加進目前的工作流程。

  3. 傳遞輸入:作為引數使用,並於下方框格中鍵入:

    for f in "$@"
    do
    	dirname=$(dirname "$f")
    	filename=$(basename "$f")
    	cat <(printf "\xEF\xBB\xBF") "$f" > "$dirname"/BOM_"$filename"
    done
    
  4. 儲存檔名為添加 UTF-8 BOM,預設路徑為:~/Library/Services

  5. 右鍵點擊欲轉換之檔案,選單中即出現添加 UTF-8 BOM選項。