CSVの文字化けは、データが壊れたように見えても、実際には読む側と書く側の文字コードが食い違っているだけのことが多い。
日本語CSVでよく出るのが UTF-8 と Shift_JIS 系の違いだ。
まず「変換」より元ファイルを残す
最初に、元CSVを複製して保存する。文字コードを変換して上書きすると、変換前の状態を比較できなくなる。調査用の原本と、作業用コピーを分ける。
文字コードが違うと何が起きるか
同じ文字でも、ファイル内部ではバイト列として保存されている。UTF-8として書かれたバイト列をShift_JISとして読む、またはその逆をすると、日本語部分が意味のない文字列に見える。
英数字だけの列は正常に見える場合があるため、「一部だけ壊れた」と誤認しやすい。
安全な確認手順
- 元ファイルを保存する
- インポート先が要求する文字コードを確認する
- CSVをテキストエディタやインポート機能で開く
- UTF-8で正常か確認する
- 必要な場合だけ作業用コピーを変換する
- 変換後に日本語・記号・改行を再確認する
特に氏名、住所、商品名、備考欄など、日本語を多く含む列を見る。
BOM付きUTF-8について
UTF-8には、ファイル先頭に識別用のBOMが付く場合がある。ソフトによってBOMの扱いが違うため、「UTF-8なのにうまく開けない」場合は、UTF-8とUTF-8 BOM付きの違いも確認対象になる。
インポート先がどちらを要求しているか分からない状態で、機械的にBOMを追加・削除するのは避ける。
文字化けと列崩れは別問題
表示が読めないのが文字コード問題。列が増減したり、1レコードが複数行へ割れるのは、カンマ・引用符・改行などCSV構造側の問題であることが多い。
関連: CSVの列数が合わない原因
文字コードを直した後でも、そのまま全件投入しない。少量データでテストし、日本語、記号、先頭0、日付、改行が想定どおり入ることを確認してから本番へ進む。
全体の確認項目はCSVインポート前チェックリストにまとめている。
文字コード問題で大事なのは、直す前の原本を残し、インポート先の仕様に合わせて変換することだ。