CSVの文字化けを避けるためにUTF-8で保存したい。
その場合でも、最初に確認したいのは「UTF-8なら必ず正解」ではなく、受け取るシステムが何を指定しているかです。
まず取込先の仕様を確認する
相手が、
- UTF-8
- UTF-8 BOM付き
- Shift_JIS
- Windows-31J
などを指定しているなら、その仕様を優先します。
文字コードを自分の都合だけで決めると、取込先で文字化けすることがあります。
ExcelでCSV UTF-8を選ぶ
Excelでは、利用しているOS・Excelの版・環境によって CSV UTF-8 (コンマ区切り) などの保存形式を選べます。
保存時は、
- 元のExcelブックを残す
- 名前を付けて保存
- CSV UTF-8形式を選ぶ
- CSVとして別ファイルに保存
という流れにします。
CSVは書式・複数シートを保持しない
UTF-8を選んでも、CSVがExcelブックになるわけではありません。
Microsoftは、CSVなどのテキスト形式へ保存すると書式が削除され、CSVは作業中のシートだけを保存すると案内しています。
元xlsxは必ず別に残します。
先頭ゼロや日付も確認する
文字コードだけ合っていても、
00123→123- 日付の表示が変わる
- 長い番号が指数表示になる
といった問題は別です。
CSVの各項目が「文字列として保持したい値なのか」を確認します。
保存後のCSVを確認する
重要なCSVなら、
- テキストエディタ
- Power Query
- 文字コード確認ツール
などで、実際の出力を確認します。
ExcelでCSVを開き直すと、値をExcel側が再解釈するため、確認用途によってはテキストとして見る方が安全です。
インポート先で少量テストする
本番100万行をいきなり投入せず、少量データで、
- 日本語
- 記号
- 先頭ゼロ
- 日付
- 改行
を含む行を試します。
CSV作成では、「UTF-8で保存した」だけで終わらず、受け手側の指定形式に合い、正しく読めることまで確認するのが安全です。
参考
- Microsoft Support: ブックをテキスト形式(.txt/.csv)で保存する
https://support.microsoft.com/ja-jp/excel/save-a-workbook-to-text-format-txt-or-csv - Microsoft Support: 他のファイル形式でブックを保存する
https://support.microsoft.com/ja-jp/excel/save-a-workbook-in-another-file-format
