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かを決めつけないほうが安全です。
実務では、次のように段階を踏みます。
- BOMの有無を確認する
- UTF-8として読み込んで文字が壊れないか確認する
- うまく読めない場合にShift_JIS系の可能性を確認する
- 作成元や取り込み先の仕様と照合する
自動判定機能が「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まで確認します。
参考一次資料
- Microsoft Support: Excel で CSV UTF-8 ファイルを正しく開くには
https://support.microsoft.com/ja-jp/excel/opening-csv-utf-8-files-correctly-in-excel - Microsoft Support: Power Queryを使ったデータ取り込み関連
https://support.microsoft.com/ja-jp/excel/import-data-from-a-csv-html-or-text-file
