CSVの文字化けはExcelで開く前に文字コードを合わせて解消

文字化けの原因はExcelがUTF-8をShift_JISとして読むこと

CSVはどの文字コードで保存したかという情報を中に持たないため、UTF-8で保存したCSVをExcelがShift_JIS系の文字コードとして読むと文字化けします。 CSVは文字を並べただけのファイルです。

目印が無いときのExcelは、日本語版Windowsで長く使われてきたShift_JIS系として読みます。業務システムやWebサービスが書き出すCSVの多くはUTF-8なので、書いた側と読む側の約束がずれて日本語が意味をなさない漢字や記号に置き換わります。

ずれているのは読み方だけでファイルに入っている文字そのものは失われていません。ただし化けた画面のまま上書き保存すると化けた文字がそのまま書き込まれるので、修正するまでは保存しないでおきます。

同じ文字でもUTF-8とShift_JISはバイト列が異なる

同じ「あ」でもUTF-8では3バイト、Shift_JISでは2バイトで表され中身の数値も異なるため、UTF-8で保存したCSVをShift_JISとして読み込むと別の文字に変わります。 コンピューターは文字を数値の列(バイト列)で記録していて、どの文字をどの列で表すかは文字コードごとに定められています。

同じ文字をUTF-8とShift_JISで記録したバイト列

文字 UTF-8 Shift_JIS
あ e3 81 82(3バイト) 82 a0(2バイト)
① e2 91 a0 なし(CP932では87 40)
髙 e9 ab 99 なし(CP932ではee e0)

2026-09-28にsakuttoAI編集部が、Pythonのエンコード処理で出した値。

UTF-8で保存した「山田,東京」をShift_JIS系(CP932)として読ませると、画面には「螻ア逕ー,譚ア莠ャ」と出て日本語の部分だけが化けます。Excelで見る文字化けが「列は合っているのに中身が意味をなさない」状態になるのは、区切りのカンマがどちらの文字コードでも同じバイトだからです。

ファイル先頭のBOMはエクセルがUTF-8と判別する目印

ファイルの先頭にBOMという3バイトの目印があれば、ExcelはそのCSVをUTF-8と判別して文字化けせずに開きます。 BOM(バイトオーダーマーク)の中身はEF BB BFと定められていて、Unicodeの説明ではUTF-8のBOMは他の文字コードと見分ける目印としてだけ使われます。

MicrosoftもUTF-8のCSVはBOM付きで保存されていれば通常どおり開けると案内していて、同じUTF-8でもBOMがあるかどうかで、ダブルクリックで開けるか化けるかが定まります。BOMの無いファイルとBOMを追加したファイルを作って先頭のバイトを比較すると、追加した方だけがef bb bfで始まり、それ以外のバイトは同じでした。

UTF-8 でエンコードされた CSV ファイルは、BOM (バイト オーダー マーク) で保存されている場合、通常どおり開くことができます。 — Microsoft サポートより
公式情報を見る →
Where a BOM is used with UTF-8, it is only used as an encoding signature to distinguish UTF-8 from other encodings — it has nothing to do with byte order. — Unicode FAQ より
公式情報を見る →

Excelのデータタブで文字コードを指定して読み込む方法

元のCSVに手を加えずに読みたいなら、ダブルクリックをやめてExcelのデータタブから読み込めば文字化けは解消できます。 取り込み機能ならダブルクリックと異なり読む前に文字コードを選べ、ファイル自体は変わらないのでシステムへ戻すCSVを触りたくない場合にもこの方法が適しています。

Power Queryで文字コードにUTF-8を選ぶ

データタブの「テキストまたはCSVから」で読み込み、プレビュー画面で文字コードにUTF-8を指定すれば、日本語が正しく表示されたまま取り込めます。 Excelを開いてデータタブの「データの取得と変換」にある「テキストまたはCSVから」をクリックします。

文字化けしたCSVを選んでインポートするとプレビューの画面が出ます。この画面はPower Queryという取り込み機能の入口です。

プレビュー上部の、元のファイルの文字コードを選ぶプルダウンでUTF-8を選び、プレビューの日本語が正しく表示されたことをチェックしてから「読み込み」を押すと、新しいシートに表として入ります。Microsoftも、BOMの無いUTF-8のCSVはこの経路で開くよう案内しています。

CSVをダブルクリックで開くと先頭の0が消える

Excelはデフォルトの書式で各列を解釈して先頭が0の番号を数値とみなすため、郵便番号や社員番号の先頭の0が消えます。 文字化けとは別の読み違いです。

番号の列を守りたいときは拡張子を.csvから.txtに変えてから開くと、テキストインポートウィザードが起動して列ごとに「文字列」を指定できます。文字化けと0の消失が同時に発生したCSVも、ウィザードなら文字コードと列の形式を1回で指定できます。

[データ] タブの [データの取得 & 変換] グループで、[テキストまたは CSV から] をクリックします。 / Excel で .csv ファイルを開くと、Excel は現在の既定のデータの書式設定を使用して、データの各列をインポートする方法を解釈します。 — Microsoft サポートより
公式情報を見る →

CSVをBOM付きUTF-8で保存し直す3つの方法

同じCSVを何度も開く場合やExcelを使う人へ提供する場合は、ファイル自体をBOM付きUTF-8で再保存するのが確実です。 BOM付きUTF-8にしておけば受け取った相手はダブルクリックだけで開けて取り込みの手順を覚える必要もなく、方法は使っている環境に合わせて次の3つから選ぶことができます。

Windowsはメモ帳の保存時にエンコードでBOM付きUTF-8を選ぶ

CSVを右クリックして「プログラムから開く」からメモ帳で開き、別名で保存するときにエンコードで「UTF-8 (BOM付き)」を選びます。 メモ帳はUTF-8を正しく処理するので、Excelで化けていた日本語も正しく表示されるはずです。

「ファイル」から別名での保存を開き、保存ダイアログの下部にあるエンコードのプルダウンで「UTF-8 (BOM付き)」を選んで保存し、保存したCSVをダブルクリックすればExcelで文字化けせずに開けます。元のファイルを残したい場合は別の名前で保存しておきます。

Macはターミナルで先頭へBOMを追加する文字化け修正

MacではターミナルでBOMの3バイトをファイルの先頭に追加すれば、ExcelがUTF-8と判別できるCSVになります。 MacのテキストエディットにはBOMを追加して保存する機能がないのでターミナルを使い、CSVのあるフォルダで次のように打つと、先頭にBOMを追加した新しいファイルができます。

printf '\xEF\xBB\xBF' | cat - 元のファイル.csv > BOM付き.csv

元のCSVがShift_JISでMac側でも化けて内容がわからない場合は、先にiconv -f CP932 -t UTF-8 元のファイル.csv > UTF-8.csvでUTF-8へ変換しておきます。できたCSVの先頭に上のprintfのコマンドでBOMを付け、作ったファイルの先頭がef bb bfになっているかはhead -c 3 BOM付き.csv | xxdでチェックできます。

ブラウザのツールで複数CSVの文字化けをまとめて解消

化けたCSVが何本もある場合は、sakuttoAIのCSV文字コード変換ツールに複数のファイルをまとめて読ませれば、BOM付きUTF-8へ一度に変換できます。 複数のファイルを同時に選ぶと元の文字コードを自動で判定してまとめて変換するので、コマンドを使いたくない場合にも適しています。

変換先のデフォルトはUTF-8(BOM付き)なので、選び直さずにそのまま変換すればExcelで開けるファイルになります。また変換はブラウザの中で行われるので、顧客名簿のようなCSVも外部サーバーへ送信せずに変換が完了します。

Shift_JISに変換して①や髙だけ化けるのはCP932との差

Shift_JISへ変換したCSVで①や髙だけが化けるのは、読み違いではなく変換先の文字コードにその文字が無いためです。 UTF-8からShift_JISへ変換するとほとんどの文字は正しく表示されるのに、①や髙や﨑といった一部の文字だけが「?」や別の文字に置き換わることがあります。

①や髙はShift_JISに無くCP932にだけある機種依存文字

Shift_JISには規格どおりの厳密なものとWindowsが文字を追加したCP932の2種類があり、①のような丸数字や髙・﨑のような異体字はCP932にしかありません。 変換ツールがどちらを使うかで結果が変わります。

「あ」や「〜」はどちらの方式でも同じバイト列になりましたが、①・髙・﨑は厳密なShift_JISでは変換できずCP932でだけ変換できました。変換ツールで「Shift_JIS」を選んで一部の文字が化ける場合は、変換先をCP932(Windows-31J)に変えるかUTF-8のまま使います。

拡張子をtxtに変えればウィザードで変換せずUTF-8を選べる

CSVの拡張子を.txtに変えて開けばテキストインポートウィザードが起動し、変換せずに文字コードを選んで読み込めます。 変換で文字を失いたくないならCSVはUTF-8のまま残し、ウィザード冒頭の画面で元のファイルの文字コードを選んで読み込みます。

UTF-8は①も髙もそのまま使うことができるので、変換を挟まない限り文字は失われません。CSVをExcelのブックとして保存したい場合は「CSVファイルをExcelに変換する方法と、0落ちや文字化けを防ぐコツ」もあわせてご覧ください。

Excel で強制的にテキスト インポート ウィザードを実行するには、ファイル名の拡張子を .csv から .txt に変更してから開くか、テキスト ファイルを接続してインポートします — Microsoft サポートより
公式情報を見る →

CSVの文字化けを防ぐ文字コードの選び方と見分け方

CSVの文字化けを次から防ぐには、誰がどのソフトで開くかに合わせてCSVを作る段階で文字コードを選んでおきます。 文字化けは書いた側と読む側で文字コードの約束がずれると発生するので、他の人へ提供する前に約束をそろえておけば発生しません。

ダブルクリックで開く相手にはBOM付きUTF-8で共有

UTF-8なら機種依存文字も失われず、BOMがあればExcelも読み違えません。 そのため、受け取った人がExcelのダブルクリックで開くなら、BOM付きUTF-8で共有するのがもっとも無難です。

会計ソフトや業務システムへ取り込むCSVは、そのシステムが指定する文字コードに合わせます。例えばシステムによってはShift_JISしか受け付けなかったりBOMを余計な文字として読んでしまったりするので、取り込み先の説明書きで指定の文字コードを確認してから保存します。

Macのfileコマンドで確認するとShift_JISは名前が出ない

MacのfileコマンドはUTF-8のCSVなら文字コード名を表示しますが、Shift_JISのCSVでは文字コードを特定できません。 ターミナルでfile -I ファイル名.csvと打つと文字コードが表示され、UTF-8のCSVはBOMの有無にかかわらず「charset=utf-8」と出ました。

Shift_JIS(CP932)で保存したCSVでは「charset=unknown-8bit」と出て、文字コードの名前は表示されませんでした。utf-8と出なかったCSVはShift_JIS系の可能性が高いので、メモ帳で開くか自動判定のある変換ツールに読ませれば、文字コードを特定することができます。

FAQ

UTF-8のCSVはExcelでは開けないのですか
開けます。ファイルの先頭にBOMという目印があれば、ダブルクリックでも文字化けせずに開きます。BOMが無い場合はデータタブの「テキストまたはCSVから」で読み込み、文字コードにUTF-8を選べば日本語が正しく表示されます。
BOMとは何ですか
UTF-8のファイルの先頭に置く3バイトの目印で、中身はEF BB BFです。他の文字コードとUTF-8を見分けるためだけに使われ、Excelはこの目印を見てUTF-8だと判別します。
Excelで開いたら先頭の0が消えたのも文字化けですか
文字化けとは別の読み違いです。ダブルクリックで開いたCSVはExcelのデフォルトの書式で列ごとに解釈されるため、郵便番号や社員番号の先頭の0が落ちます。拡張子を.txtに変えて開けばテキストインポートウィザードが起動し、その列を文字列に指定できます。