CSVの文字コードで困る場面は、たいてい「何の文字コードか知りたい」と「別の文字コードに変えたい」が同時に起きています。

ここで先に押さえておきたいのは、文字化けして見えるだけでは元の文字コードを確定できないということです。ファイルの先頭情報、UTF-8として正しく読めるか、作成元・受け渡し先の仕様、Excelなどでのプレビューを組み合わせて判断します。

そして変換するときは、文字コードだけを変えます。00123 を 123 にしたり、日付を勝手に変換したりする必要はありません。

最初に「受け渡し先が何を要求しているか」を確認する

文字コードは、単独で「これが正解」と決めるものではありません。

たとえば同じCSVでも、受け渡し先が次のように指定していることがあります。

  • UTF-8
  • UTF-8 BOM付き
  • Shift_JIS系(Windows-31J / MS932 / CP932 などの名称で扱われる実装を含む)

注意: 「Shift_JIS」という表示名だけで完全に同じ文字集合・挙動とは限りません。受け渡し先が Windows-31J、MS932、CP932 などを指定している場合は、その仕様名を優先します。

  • Excelで文字化けしない形式

仕様が明記されているなら、その指定が最優先です。

「最近はUTF-8だから、とりあえずUTF-8へ変換する」と決めると、古い業務システムや取り込み先で読めなくなることがあります。反対に、何でもShift_JISにすると、表現できない文字を含むデータで問題が出ることがあります。

1. BOMが付いているか確認する

UTF-8のCSVでは、BOM付きとBOMなしの両方が使われます。

Microsoftは、UTF-8のCSVがBOM付きで保存されている場合、Excelで通常どおり開けると案内しています。BOMなしのUTF-8は、Power Queryの「テキスト/CSVから」などで取り込む方法が案内されています。

つまりBOMは「CSVの必須部品」ではありませんが、Excelでの扱いを考えると判断材料になります。

BOMの有無を確認できるエディターやCSV診断ツールがあるなら、最初に見ておくと切り分けが早くなります。

2. UTF-8として正しく読めるか確認する

BOMがないファイルでは、見た目だけでUTF-8かShift_JISかを決めつけないほうが安全です。

実務では、次のように段階を踏みます。

  1. BOMの有無を確認する
  2. UTF-8として読み込んで文字が壊れないか確認する
  3. うまく読めない場合にShift_JIS系の可能性を確認する
  4. 作成元や取り込み先の仕様と照合する

自動判定機能が「Shift_JIS 90%」のような結果を出しても、それだけで元ファイルを上書きしないほうがよいでしょう。短いASCII中心のCSVなど、判定材料が少ないファイルもあります。

3. Excelでは「ダブルクリック」と「取り込み」を分ける

Excelで文字化けするCSVは、ファイル自体が壊れているとは限りません。

Microsoftは、BOMなしUTF-8のCSVについて、Power Queryを使って

データ → データの取得 → ファイルから → テキスト/CSVから

のように取り込む方法を案内しています。

大事なのは、開いた直後に保存し直さないことです。まずプレビューで日本語、列の区切り、先頭ゼロなどが正しく見えるか確認します。

4. UTF-8、UTF-8 BOM付き、Shift_JISをどう選ぶか

大まかな判断は次のように整理できます。

| 出力候補 | 向いている場面 | 注意点 |
|---|---|---|
| UTF-8 | Web系・新しいシステム間の受け渡し | Excelの開き方によってはBOMなしで文字化けすることがある |
| UTF-8 BOM付き | Excelで直接開く利用者が多い受け渡し | 取り込み先がBOMを想定しているか確認 |
| Shift_JIS系 | 古い国内業務システム等から指定されている | 表現できない文字や実装差に注意 |

この表も万能なルールではありません。受け渡し先の仕様が分かるなら、その仕様を優先します。

5. 変換前に元ファイルを残す

文字コード変換で怖いのは、文字コード以外まで変えてしまうことです。

たとえば次の値は文字列のまま残したいケースがあります。

00123
12345678901234567
2026-01

Excelなどで開いて保存し直すと、内容によっては数値・日付として解釈される可能性があります。

そのため、文字コード変換では次を守ります。

  • 元ファイルを別名で残す
  • 文字コード以外の意味を変えない
  • 変換後に件数・列数を確認する
  • 先頭ゼロや長いIDを確認する
  • 取り込み先で実際にテストする

6. 変換後は「読めた」で終わらせず再確認する

日本語が表示できただけでは、変換成功とは限りません。

最低限、次を確認します。

  • レコード件数が変わっていない
  • 列数が意図せず変わっていない
  • 引用符内のカンマ・改行が保持されている
  • 00123 のようなコードが変わっていない
  • 長いIDが丸められていない
  • 受け渡し先でエラーなく取り込める

文字コード変換は、データ内容を整形する作業ではありません。文字をどうバイト列として表すかを変え、データの意味はそのまま保つのが基本です。

まとめ

CSVの文字コードを確認するときは、見た目だけで決めつけず、BOM・読み込み結果・作成元/取り込み先の仕様を組み合わせます。

変換先は「UTF-8が新しいから」といった理由ではなく、受け渡し先に合わせて選びます。そして変換後は、文字が読めることだけでなく、件数・列数・先頭ゼロ・長いIDまで確認します。

参考一次資料

おすすめの記事