経緯
データ分析をMacでやると、データを保存する際のcsvの文字コードが基本的にUTF-8になる。
PandasでもよくUTF-8で保存していたがデータを渡す相手がWindows(SJIS)のことが多々あり、UTF-8なのにSJISで開こうとして文字化けが起こり、変換の手間がかかっていたので根本解決できないものか調べた。
結論
UTF-8-SIG(BOM付きUTF-8)を使ってください。
BOMがあるのでWindowsでも文字化けせずに開けます。
簡単な変換方法
VSCode使う
ファイルを開くと右下に文字コードが表示される(添付画像赤枠)
そこをクリックすると「エンコード付きで再度開く」と「エンコード付きで保存」が選べるので、そこで「エンコード付きで保存」を選択
保存形式は「UTF-8 with BOM」を選択
PythonのPandasで変換(csv)
UTF-8 -> UTF-8-SIG
import pandas as pd
file = '/hogehoge/fugafuga.csv' # ここ書き換えて
csv_df = pd.read_csv(file)
csv_df.to_csv('./utf-8-sig_file.csv', encoding='utf-8-sig', index=False)
UTF-8のBOM付きかどうか確認する方法
ファイルの先頭にUTF-8のBOM(EF BB BF)があればOK
他の文字コードだとEF BB BFじゃないらしい
$head -c 3 file.csv | xxd -p
efbbbf