在 csv file 中寫入中文資料
前言 原先要為了不同作業系統處理不同編碼,但原本 UTF-8 就應該可以被所有作業系統給讀取,於是研究了一下並把注意事項做成筆記! UTF-8 vs UTF-8-sig 兩個都是 UTF-8 的編碼,不過 UTF-8-sig(UTF-8 with signature) 是在檔案開頭帶了 \ufeff 的BOM(Byte Order Mark),定義一個,讓打開他的檔案知道這是個 UTF-8 編碼的檔案。 開啟方式的解決方案 在開啟檔案的時候,直接透過記事本或是 VSCode 其實是可以讀取到正確的內容的,但是在 Excel 中打開會是亂碼,那是因為 Excel 沒有讀到 BOM(Byte Order Mark),所以沒辦法正確的解碼中文字,那麼就會顯示亂碼了。 使用記事本或是 VSCode 就會用正確的編碼開啟了。 寫入方式的解決方案 剛剛提到前面少了 BOM 讓 Excel 不知道怎麼開,那就在開頭加上 BOM,要在檔案中寫入 BOM 的方法有兩種,一個是使用 UTF-8-sig,另一個就是自己寫 BOM 進去檔案了,這樣就可以讓編輯器知道要用 UTF-8 來解碼這個檔案! 使用 UTF-8-sig with open(path, 'w', newline='', encoding='utf-8-sig') as csv_file: csv_file.write(data) 寫入 BOM with open(path, 'w', newline='', encoding='utf-8') as csv_file: # 寫入 UTF-8 BOM csv_file....