目錄
ToggleCSV亂碼問題總覽
什麼是CSV亂碼?
CSV(Comma-Separated Values)是一種廣泛用於資料交換的純文字檔案格式,常見於報表、系統匯出、資料集下載等情境。所謂「CSV亂碼」,指的是當你用Excel、記事本或Google Sheets等軟體開啟CSV時,原本應該顯示的中文、日文或特殊符號卻變成無意義的亂碼、問號或方框,導致資料無法閱讀。
真實案例
- 公司財務系統匯出客戶名單CSV,直接用Excel打開後,姓名欄位全變成「新客户」等亂碼。
- 從政府資料平台下載CSV,雙擊開啟發現地址欄全是問號,無法辨識。
為什麼會發生亂碼?
亂碼的根本原因是「編碼不一致」。不同的系統、軟體、國家地區,預設的文字編碼方式可能不同。當檔案的實際編碼與開啟軟體預期的編碼不符時,就會出現亂碼。
常見亂碼情境
- Windows系統預設用ANSI(Big5、CP950等),但檔案實際為UTF-8。
- Mac或Linux系統預設UTF-8,卻收到來自Windows的Big5編碼檔案。
- 網路下載的CSV未標註編碼,Excel預設錯誤解讀。
常見字符編碼與CSV
UTF-8、ANSI、Big5、Shift-JIS等比較
編碼類型 | 適用場景 | 優點 | 缺點 | 與亂碼關聯 |
---|---|---|---|---|
UTF-8 | 跨平台、網路、國際 | 支援多語言、通用性高 | Windows舊版Excel辨識有限 | 建議首選,最能避免亂碼 |
ANSI | Windows本地 | 舊系統支援佳 | 僅支援單一語系,跨平台易亂碼 | 常見亂碼來源 |
Big5 | 台灣Windows | 支援繁體中文 | 不支援多語言,跨平台易亂碼 | 台灣常見亂碼來源 |
Shift-JIS | 日本地區 | 支援日文 | 其他語系不支援 | 日文資料易亂碼 |
延伸說明
- 若需跨國、跨平台交換資料,建議統一使用UTF-8。
- 若僅限台灣Windows內部流通,可考慮Big5,但不建議外部交換。
BOM(Byte Order Mark)介紹與影響
BOM是UTF-8檔案開頭的一段隱藏標記,用於提示軟體「這是UTF-8編碼」。
– Excel(Windows):有BOM時,較能正確辨識UTF-8,否則常出現亂碼。
– Google Sheets、Notepad++:通常能自動辨識UTF-8,BOM可有可無。
– 部分系統或程式:BOM會被當成資料內容,導致第一欄出現奇怪符號。
如何判斷CSV檔案編碼
使用記事本/Notepad++等工具判斷
Notepad++步驟
- 右鍵點選CSV檔案,選擇「使用Notepad++開啟」。
- 查看下方狀態列,會顯示「UTF-8」、「ANSI」等編碼資訊。
- 也可點選「編碼」選單,檢查目前檔案編碼。
Windows記事本
- 開啟檔案後,另存新檔時可選擇「ANSI」、「UTF-8」等編碼,間接判斷原始編碼。
使用命令列(如file、iconv)判斷
Linux/macOS
file 檔案名稱.csv
會顯示檔案的編碼資訊。iconv -f 源編碼 -t 目標編碼 檔案.csv
可嘗試轉換編碼,若失敗代表原始編碼判斷錯誤。
範例
file data.csv
# 輸出:data.csv: UTF-8 Unicode text
常見錯誤訊息與亂碼畫面對照
錯誤畫面/訊息 | 可能原因 | 對應解法 |
---|---|---|
新客户 | Big5被當成UTF-8 | 轉存為Big5或UTF-8 |
??? | 編碼不符 | 另存為正確編碼 |
第一欄多出奇怪字元 | BOM被當成資料 | 另存無BOM或調整程式 |
解決CSV亂碼的實用方法
用記事本/Notepad++轉存編碼
Notepad++步驟
- 開啟CSV檔案。
- 點選「編碼」→選擇「以UTF-8編碼」。
- 點選「檔案」→「另存新檔」,選擇UTF-8(可選加BOM)。
Windows記事本
- 開啟CSV檔案。
- 點選「檔案」→「另存新檔」。
- 編碼選擇「UTF-8」或「ANSI」,再儲存。
用Excel正確匯入CSV
步驟一:不要直接雙擊開啟
直接雙擊CSV,Excel會用預設編碼(通常是ANSI),容易亂碼。
步驟二:用「資料」匯入
- 開啟Excel,點選「資料」→「自文字/CSV」。
- 選擇CSV檔案,於「檔案原始格式」下拉選單選擇「65001: Unicode (UTF-8)」。
- 預覽無亂碼後,點選「載入」。
實際案例
- 下載政府開放資料CSV,直接開啟亂碼,改用「資料」匯入後顯示正常。
用Google Sheets正確匯入CSV
- 開啟Google Sheets,點選「檔案」→「匯入」。
- 上傳CSV檔案,於「字元編碼」選擇「自動偵測」或「UTF-8」。
- 預覽資料,確認無亂碼後匯入。
注意
- 若仍亂碼,可嘗試先用Notepad++轉存UTF-8再匯入。
用命令列工具(如iconv)轉換編碼
範例
將Big5編碼的CSV轉為UTF-8:
iconv -f big5 -t utf-8 input.csv -o output.csv
-f
:來源編碼-t
:目標編碼
批次處理
可寫shell script自動轉換多個檔案,適合大量資料處理。
用程式語言(如Python)批次處理
Python範例
import glob
for file in glob.glob('*.csv'):
with open(file, 'r', encoding='big5') as f:
content = f.read()
with open(f'utf8_{file}', 'w', encoding='utf-8-sig') as f:
f.write(content)
utf-8-sig
:含BOM,適合Excel辨識。
實用情境
- 系統自動產生大量Big5 CSV,需批次轉為UTF-8供跨平台使用。
預防與最佳實踐
統一使用標準編碼
- 建議所有系統、團隊、供應商統一採用UTF-8,減少跨平台亂碼風險。
- 若需與台灣本地舊系統對接,Big5仍可考慮,但應標註清楚。
提供檔案編碼資訊
- 傳遞CSV時,於檔名、郵件、說明文件註明「本檔案為UTF-8編碼」。
- 系統自動產生檔案時,可於檔案開頭加註說明列。
BOM的使用建議
- 若主要用於Excel(Windows),建議加上BOM(即UTF-8 with BOM)。
- 若需供程式或Linux系統讀取,建議不加BOM,避免資料欄位多出奇怪符號。
- Google Sheets對BOM較不敏感,可自動辨識。
常見FAQ與疑難排解
Excel打開是亂碼怎麼辦?
- 不要直接雙擊開啟,請用「資料」→「自文字/CSV」匯入,並選擇正確編碼。
- 若原始檔案為Big5,請先轉存為UTF-8再匯入。
如何判斷CSV檔案編碼?
- 用Notepad++或file指令檢查。
- 若開啟後出現亂碼,嘗試不同編碼另存新檔。
Google Sheets匯入亂碼怎麼解?
- 匯入時選擇「UTF-8」或「自動偵測」。
- 若仍亂碼,請先用Notepad++轉存UTF-8。
BOM該不該加?
- 若主要用於Excel,建議加BOM。
- 若需供程式或跨平台使用,建議不加BOM。
結論與推薦工具
重點整理與行動建議
- CSV亂碼多因編碼不一致,建議統一使用UTF-8。
- 開啟CSV時,請用正確方式匯入(如Excel的「資料」匯入)。
- 需大量自動轉換時,可用Notepad++、iconv或Python腳本處理。
- 傳遞檔案時,請標註編碼資訊,並依需求決定是否加BOM。
專案管理與協作工具推薦
在團隊協作、資料交換或專案管理中,若需大量處理CSV、Excel等檔案,建議善用現代化的協作平台。例如 [Monday.com]、[ClickUp]、[Notion] 等工具,能有效整合資料流、減少手動轉檔錯誤,提升團隊效率。若需進行PDF、簽署等流程,亦可考慮 [pdfFiller]、[SignNow] 等工具,讓文件處理更順暢。