CSVの文字化けは、ファイルが壊れているとは限りません。多くの場合、「ファイルが保存されている文字コード」と「開くソフトが想定した文字コード」が食い違っています。
このページでは、WindowsでCSVを開いたときに日本語が文字化けするケースを対象に、UTF-8・UTF-8(BOM付き)・CP932(Shift_JIS系)のどれで保存されているかを判別し、正しく開き直すまでの手順を整理します。
先に結論:直す前に「今の文字コード」を特定する
文字化けしたCSVを、いきなり別の文字コードで保存し直すのは避けてください。誤った前提で変換すると、化けた文字のまま保存され、元に戻せなくなることがあります。
確認は次の順で進めます。
- 元ファイルをコピーする
- 化け方のパターンから当たりをつける
- エディタで文字コードを確認する
- 先頭3バイトでBOMの有無を確認する
- Excelでは文字コードを指定して開く
- 保存し直す場合は、渡し先が求める形式で保存する
- 保存後に開き直して確認する
1. 元ファイルをコピーする
作業はコピー側で行い、原本は上書きしません。文字コードを変えて一度保存すると、元の文字が失われる場合があります。
2. 化け方のパターンから当たりをつける
文字化けの見た目には、ある程度の傾向があります。
| 見え方 | 考えられる状態 |
|---|---|
| 「縺」「繧」「譁」などの漢字が並ぶ | UTF-8のファイルをCP932(Shift_JIS系)として読んでいる |
| 「�」(ひし形の?)が多い | CP932のファイルをUTF-8として読んでいる |
| 1行目の先頭(最初の列名の前)だけに「」などの見慣れない記号が付く | BOM付きUTF-8を、BOMを想定しないソフトで読んでいる |
| 「?」に置き換わった文字があり、開き直しても戻らない | 保存時に、その文字コードで表せない文字が失われた |
| 「①」「髙」「﨑」など一部の文字だけ化ける | 機種依存文字や異体字を、渡し先の文字コードで扱えない |
ここでは当たりをつけるだけにして、次の手順で実際の文字コードを確かめます。
3. エディタで文字コードを確認する
Excelで開く前に、テキストエディタで開くと保存形式を確認しやすくなります。
Windowsのメモ帳
ファイルを開くと、右下のステータスバーに「UTF-8」「UTF-8 (BOM)」「ANSI」などが表示されます。日本語版Windowsでの「ANSI」は、通常CP932(Shift_JIS系)を指します。ステータスバーが見えない場合は、「表示」メニューから表示を有効にします。
Visual Studio Code
右下のステータスバーに「UTF-8」「UTF-8 with BOM」「Shift JIS」などが表示されます。その表示をクリックし、「エンコード付きで再度開く(Reopen with Encoding)」から「Japanese (Shift JIS)」や「UTF-8」を選ぶと、別の文字コードとして読み直せます。日本語が正しく読めた方が、そのファイルの文字コードです。
エディタの自動判定は、ファイルが小さい場合や英数字がほとんどの場合に外れることがあります。表示された文字コード名だけで判断せず、日本語部分が正しく読めているかまで確認してください。
4. 先頭3バイトでBOMの有無を確認する
BOM付きUTF-8のファイルは、先頭が EF BB BF の3バイトで始まります。BOMなしUTF-8やCP932のファイルには、この3バイトはありません。
PowerShellでは、CSVのあるフォルダで次のように実行すると先頭のバイトを確認できます。
Format-Hex -Path .\data.csv | Select-Object -First 1
表示された1行目のバイト列が EF BB BF で始まっていれば、BOM付きUTF-8です。
EF BB BF で始まらない場合は、BOMなしUTF-8かCP932のどちらかである可能性が高くなります。この2つは先頭バイトだけでは区別できないため、手順3の方法で、どちらとして読むと日本語が正しく表示されるかを確認します。
5. Excelでは文字コードを指定して開く
ExcelでCSVをダブルクリックすると文字コードが自動で判断され、BOMなしUTF-8のファイルが文字化けすることがあります。その場合は、ダブルクリックではなくデータの取り込み機能を使います。
- Excelで空のブックを開く
- 「データ」タブ →「テキストまたはCSVから」を選び、CSVファイルを指定する
- プレビュー画面の「元のファイル」で文字コードを選ぶ
- UTF-8なら「65001: Unicode (UTF-8)」
- CP932なら「932: 日本語 (シフト JIS)」
- プレビューで日本語が正しく表示されることを確認してから読み込む
郵便番号・社員番号などの先頭0や桁数の多い番号は、数値として読み込まれると変わることがあります。プレビュー画面で「データの変換」を選び、該当列のデータ型をテキストにしてから読み込むと防ぎやすくなります。
Excelのバージョンによって、メニュー名や画面の構成が異なる場合があります。
6. 保存し直す場合は渡し先の形式を優先する
Windows版Excelでは、一般に保存形式によって文字コードが次のように分かれます。
| 保存形式 | 保存される文字コード |
|---|---|
| CSV UTF-8 (コンマ区切り) | BOM付きUTF-8 |
| CSV (コンマ区切り) | 日本語版WindowsではCP932(Shift_JIS系) |
どちらが正しいかは、CSVの渡し先で決まります。取込先のシステムや会計ソフトの仕様に「UTF-8」「Shift_JIS」「BOMなし」などの指定があれば、それに合わせます。
CP932で保存するときは、次の点に注意します。
- 絵文字や「𠮷(つちよし)」など、CP932にない文字は保存時に「?」へ置き換わることがあります
- 「①」「髙」「﨑」などはCP932では扱えますが、厳密なShift_JISを前提とするシステムでは化けたり拒否されたりする場合があります
渡し先が「BOMなしUTF-8」を求めている場合、Excelの保存形式だけでは対応できないことがあります。その場合は、Visual Studio Codeでファイルを開き、右下の文字コード表示から「エンコード付きで保存(Save with Encoding)」→「UTF-8」を選ぶと、BOMなしで保存し直せます。
7. 保存後に開き直して確認する
- [ ] 保存したファイルを一度閉じ、もう一度開いて文字化けがない
- [ ] 行数が元ファイルと同じ
- [ ] 先頭0・桁数の多い番号・日付が変わっていない
- [ ] セル内改行がある行が分裂していない
- [ ] 丸数字・旧字体・記号などが「?」に置き換わっていない
- [ ] 渡し先が求める文字コード・BOMの有無と一致している(手順3・4の方法で再確認)
具体例
例1:UTF-8のCSVをExcelでダブルクリックすると化ける
メモ帳では「UTF-8」と表示され、日本語も正しく読める。Excelのデータ取り込みで「65001: Unicode (UTF-8)」を指定すると正しく表示される。この場合、ファイルは壊れておらず、開き方の問題です。Excelでダブルクリックして開ける形にしたい場合は、「CSV UTF-8 (コンマ区切り)」で保存し直すとBOMが付きます。
例2:取込先のシステムで1列目の列名だけ認識されない
先頭3バイトを確認すると EF BB BF だった。BOMを想定しないシステムでは、BOMが1列目の列名の一部として読まれ、列名が一致しないことがあります。渡し先の仕様を確認し、BOMなしUTF-8で保存し直して試します。
例3:CP932で保存したら一部の名前が「?」になった
元のUTF-8ファイルに、CP932で表せない文字が含まれていた。保存し直したファイルからは元の文字を復元できないため、コピーしておいた原本に戻ります。そのうえで、渡し先がUTF-8を受け付けるか確認し、受け付けない場合は該当文字の扱いを渡し先のルールに合わせます。
会計ソフトへの取り込みでエラーになる場合
文字化けではなく、列数・日付・金額・勘定科目などが原因で取り込めない場合は、「会計ソフトにCSVを取り込めないときの確認順」で原因を順に切り分けてください。会計ソフトごとに受け付ける文字コードや形式が異なるため、最後は各ソフトの公式仕様を確認します。
参考情報
- Microsoft: Opening CSV UTF-8 files correctly in Excel
- Microsoft: CSV/file formats support
確認日: 2026-09-28
