CSVの文字化けを避けるためにUTF-8で保存したい。

その場合でも、最初に確認したいのは「UTF-8なら必ず正解」ではなく、受け取るシステムが何を指定しているかです。

まず取込先の仕様を確認する

相手が、

  • UTF-8
  • UTF-8 BOM付き
  • Shift_JIS
  • Windows-31J

などを指定しているなら、その仕様を優先します。

文字コードを自分の都合だけで決めると、取込先で文字化けすることがあります。

ExcelでCSV UTF-8を選ぶ

Excelでは、利用しているOS・Excelの版・環境によって CSV UTF-8 (コンマ区切り) などの保存形式を選べます。

保存時は、

  1. 元のExcelブックを残す
  2. 名前を付けて保存
  3. CSV UTF-8形式を選ぶ
  4. 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

おすすめの記事