CSVをExcelで開いたときに日本語が崩れたり、データが1列にまとまったりする場合は、上書きする前に文字コード、BOM、区切り文字、列数を分けて確認します。
CSVで問題が起きる理由
CSVは表計算ブックではなく、文字と区切り記号で表を表現したテキストファイルです。見た目が同じ .csv でも、UTF-8、Shift_JIS(CP932)、UTF-16などの文字コードや、カンマ、タブ、セミコロンなどの区切り文字が異なります。
Excelが想定した条件とファイル側の条件が違うと、次の症状が起きます。
- 日本語が文字化けする
- 全データが1列に入る
- 行によって列がずれる
- 先頭のゼロが消える
- 長い番号が指数表示になる
- 日付のような値が自動変換される
文字化けと列ずれは別の問題です。文字が読めても列が崩れる場合は区切り文字を、列が揃っていても日本語が崩れる場合は文字コードを優先して確認します。
CSV・文字コード診断の使い方
このページの診断でCSVを選びます。ファイルはブラウザ内で処理され、サーバーには送信されません。結果には、文字コード、BOM、区切り文字、確認行数、基準列数、改行の種類が表示されます。
診断はUTF-8、UTF-16、Shift_JIS候補を判定し、カンマ、タブ、セミコロン、パイプを区切り文字の候補として確認します。20 MBまでのファイルに対応し、大きなCSVでは先頭5,000行を解析します。
文字コードの自動判定は100%ではありません。結果は、作成元の仕様やExcelの読み込みプレビューと合わせて判断してください。
UTF-8と表示された場合
UTF-8のCSVにBOMが付いている場合は、Excelで通常どおり開けることがあります。BOMなしのUTF-8で文字化けする場合は、ダブルクリックで開かず、Excelの読み込み機能を使います。
Windows版Excelでは、一般に次の順で読み込めます。
- Excelで空のブックを開く
- 「データ」タブを選ぶ
- 「データの取得」または「テキストまたはCSVから」を選ぶ
- 対象ファイルを指定する
- プレビューで文字コードを
UTF-8にする - 区切り文字と列の表示を確認してから読み込む
先頭のゼロや長い番号を保持したい列は、読み込み時にテキスト型として扱います。開いた後で直すより、取り込み前に型を指定する方が元データを守りやすくなります。
Shift_JIS候補と表示された場合
日本の業務システムから出力したCSVでは、Shift_JISまたはWindows-31J(CP932)が使われることがあります。診断がShift_JIS候補なら、Excelの読み込み画面でも対応する文字コードを選び、氏名、住所、機種依存文字などをプレビューで確認します。
Shift_JISをUTF-8として開くと文字化けし、反対にUTF-8をShift_JISとして開いても日本語が崩れます。文字化けした状態のまま保存すると、元の文字を復元しにくくなるため、必ずコピーで作業してください。
BOMなしはエラーではない
BOMは、ファイル先頭に置かれる文字コードの目印です。UTF-8にBOMがないこと自体はCSVの破損を意味しません。ただし、アプリが文字コードを自動判定する際の手掛かりが減るため、ダブルクリックでは意図しない文字コードで開かれることがあります。
作成元を変更できる場合は、受け手の環境に合わせて UTF-8 BOM付き で出力するか、読み込み手順を明示します。既存ファイルを変換する場合は、変換前の原本を残し、変換後の文字と列数を比較します。
1列にまとまる場合
文字が正常でも1列にまとまる場合は、文字コードではなく区切り文字が合っていない可能性があります。診断結果の「区切り文字」を、Excelの読み込み画面で同じ値にします。
| 診断結果 | 読み込み時の指定 |
|---|---|
| カンマ | コンマまたはカンマ区切り |
| タブ | タブ区切り |
| セミコロン | セミコロン区切り |
| パイプ | ` |
| 判定できない | 作成元の出力仕様を確認する |
区切り文字が値の中に含まれる場合は、ダブルクォートで正しく囲まれている必要があります。行ごとの列数が揃わないときは、値の途中のカンマ、改行、ダブルクォートを重点的に確認します。
数式として扱われるセルの警告
セルの先頭が =、+、-、@ の場合、表計算ソフトで数式として解釈される可能性があります。見覚えのない式が含まれるCSVは、信頼できる作成元か確認してから開いてください。診断は候補を数えますが、安全性や悪意の有無までは判定しません。
直らない場合の確認順
- 元ファイルを複製し、原本を保管する
- 作成元で文字コードと区切り文字を確認する
- 診断結果とExcelの読み込み指定を一致させる
- プレビューで日本語、列数、先頭ゼロ、日付を確認する
- 変換後は元データとの行数・列数を比較する
ファイル自体がCSVではない可能性がある場合は、拡張子と実際のファイル形式を確認する方法で先に形式を確認してください。