ブログ

CSVをExcelで開くと文字化けする理由と、ブラウザ内で文字コードを変換する手順

基幹システムや取引先から受け取ったCSVをExcelで開いたら、「売上」が「螢イ荳」のような見慣れない漢字と半角カナの並びになっていた。事務の現場でよく起きる文字化けです。データが壊れたように見えますが、多くの場合、中身は無事で、読み方を取り違えているだけです。

文字化けは「読み方の取り違え」

CSVは文字をバイトの並びとして保存しています。同じ文字でも、文字コードによってバイトの並びが違います。

文字Shift_JISUTF-8
国8D 91E5 9B BD
民96 AFE6 B0 91

Shift_JISでは漢字1文字がおおむね2バイト、UTF-8では3バイトです。UTF-8で書いたファイルをShift_JISのつもりで読むと、3バイトずつのまとまりを2バイトずつ区切ってしまい、別の漢字や半角カナに化けます。逆に、Shift_JISのファイルをUTF-8として読むと、UTF-8として成り立たない並びが多いため「�」がたくさん並びます。

つまり、ファイルの中身は書いたときのまま残っていて、開く側が違う文字コードで読んだために化けて見える、というのが基本の仕組みです。

Excelはどうやって文字コードを決めているか

CSVをダブルクリックで開くと、Excelはファイルの先頭を見て文字コードを決めます。

  • 先頭にBOM(UTF-8であることを示す3バイトの印)があれば、UTF-8として読む。
  • BOMがなければ、パソコンの言語設定に応じた文字コードで読む。日本語設定のWindowsでは、Shift_JISを拡張したCP932になる。

このため、日本語設定のWindowsでは、Shift_JISのCSVは普通に開け、BOMのないUTF-8のCSVが化けます。反対に、Shift_JISのCSVが化けるのは、日本語以外の言語設定のパソコンで開いたときや、一度別のソフトでUTF-8に保存し直したつもりが元のまま残っていたときなどです。「Shift_JISだから化ける」のではなく、「ファイルの文字コード」と「開く側が想定した文字コード」が食い違うと化ける、と考えると原因を追いやすくなります。

もう一つ、Shift_JISの中にも違いがあります。①やローマ数字、「髙」などの一部の文字は、厳密なShift_JISには無く、Windowsの拡張(CP932)にだけあります。こうした文字を含むデータを厳密なShift_JISとして扱うシステムに渡すと、その文字だけが「?」などに置き換わることがあります。

化けたときの見分け方

  • 「�」が多い:Shift_JISのファイルをUTF-8として読んでいる可能性が高い。
  • 見慣れない漢字と半角カナが混ざる:UTF-8のファイルをShift_JISとして読んでいる可能性が高い。
  • 一部の記号だけが「?」になる:変換の途中で、その文字が表せない文字コードを通っている。

なお、文字化けした状態のままExcelで上書き保存すると、化けた文字が正しい文字として保存され、元に戻せなくなります。開いて化けていたら、保存せずに閉じるのが安全です。

Excelの機能で開く方法

Excelの「データ」タブにある「テキストまたはCSVから」で取り込むと、「元のファイル」の欄で文字コードを選べます。日本語のShift_JISなら「932: 日本語 (シフト JIS)」、UTF-8なら「65001: Unicode (UTF-8)」を選び、プレビューで化けていないことを確かめてから読み込みます。ただし毎回この手順を踏むのは手間で、ほかの人に渡すファイルでは、相手にも同じ操作を求めることになります。

ブラウザ内で文字コードを変換する手順

ファイルそのものをExcelで開ける形に直しておけば、ダブルクリックで開けます。CSV・Excel整形ボックスでは、次の手順で変換できます。

  1. ページを開き、CSVファイルを枠にドラッグ&ドロップするか、ボタンから選ぶ。
  2. 文字コードが自動判定され、先頭50行のプレビューが出る。プレビューが化けていれば、「文字コード」の欄を手で切り替える。
  3. 「書き出す」の形式で「CSV(UTF-8 BOM付き・Excel向け)」を選ぶ。Shift_JISを求めるシステムに渡す場合は「CSV(Shift_JIS)」を選ぶ。
  4. 「ダウンロード」を押し、できたファイルをExcelで開いて確かめる。

処理はブラウザの中だけで行い、ファイルはサーバーへ送信されません。社外に出せないデータでも、手元のパソコンの中で変換が済みます。

まとめ

文字化けの多くは、ファイルの文字コードと開く側の想定が食い違っているだけで、データそのものは残っています。化けたら保存せずに閉じ、文字コードを確かめて読み直すか、Excelが迷わない形(BOM付きUTF-8)に変換しておく。この順で対応すれば、元のデータを傷めずに済みます。

CSV・Excel整形ボックス

CSV・TSV・Excelの表を整形する無料ツール。文字コード(UTF-8/Shift_JIS/EUC-JP)の自動判定、全角英数字の半角化、半角カナの全角化、空行・重複行の削除、列の並べ替え、絞り込み。ファイルは端末の外に送信されません。

ブログ一覧へ