CSVがExcelで文字化けするときの直し方|UTF-8(BOM付き)とShift_JISの使い分け
Webサービスからダウンロードした CSV をダブルクリックで Excel で開いたら、「豌丞錐,菴乗園」のように文字化けしていた。これは CSV の中身が壊れているのではなく、Excel が文字コードを取り違えて読んだだけです。この記事では、化ける理由、いま開いている CSV を読める形で開く方法、次から化けない保存の仕方(UTF-8 BOM付き・Shift_JIS)、変換するときに消える文字の注意点をまとめます。
ExcelはBOMのないCSVをShift_JISとして読む
最近のWebサービスやシステムが書き出すCSVは、ほとんどがUTF-8です。一方、日本語版のWindowsのExcelは、CSVをダブルクリックで開くと、ファイルの先頭に「UTF-8です」という印(BOM)がなければShift_JISとして読みます。UTF-8の日本語をShift_JISで読むので、次のように化けます。
| 元の内容 | Excelでの見え方(UTF-8をShift_JISで読んだ) |
|---|---|
| 氏名,住所 | 豌丞錐,菴乗園 |
| 商品名,価格 | 蝠�刀蜷�,萓。譬シ |
| 山田太郎,東京都千代田区 | 螻ア逕ー螟ェ驛�,譚ア莠ャ驛ス蜊�サ」逕ー蛹コ |
| よろしくお願いします | 繧医m縺励¥縺企。倥>縺励∪縺� |
BOM(バイトオーダーマーク)は、ファイルの先頭に置くEF BB BFの3バイトで、画面には表示されません。ExcelはこのBOMがあればUTF-8として正しく読みます。つまり「UTF-8(BOM付き)」で保存されたCSVなら、ダブルクリックでも化けません。英数字だけのCSVは、UTF-8とShift_JISで同じバイトになるので化けず、日本語が入ったときだけ化けるのもこのためです。
いま化けているCSVを正しく開く方法
- 1
Excelのデータタブから読み込む
空のブックを開き、「データ」タブ→「テキストまたはCSVから」でファイルを選びます。プレビュー画面の「元のファイル」で「65001: Unicode (UTF-8)」を選ぶと、日本語が読めることを確かめてから読み込めます。
- 2
BOM付きのUTF-8に変換してから開く
文字化け 復元・解読ツールの「ファイル・CSV」にファイルを入れると、文字コード・BOMの有無・改行コードを判定します。「UTF-8(BOM付き)」を選んで保存したファイルは、ダブルクリックでもExcelで化けずに開けます。
- 3
Googleスプレッドシートで開く
GoogleスプレッドシートやMacのNumbersはUTF-8のCSVをそのまま読めます。中身を見るだけならこれでも十分ですが、Shift_JISのCSVを開くと逆に化けることがあります。
化けた文字しか手元にない(CSVの中身をメールに貼られた、など)ときは、化けた文字を「文字化けを直す」に貼り付ければ、UTF-8をShift_JISで読んだものとして元に戻します。「豌丞錐,菴乗園」なら「氏名,住所」です。化け方の見分け方は文字化けのパターン早見表を参考にしてください。
渡す相手に合わせた保存の仕方
| 渡す先 | おすすめの文字コード | 理由 |
|---|---|---|
| WindowsのExcelで開く人 | UTF-8(BOM付き) | ダブルクリックで化けず、絵文字や旧字も残る |
| 古い業務システム・会計ソフトへの取り込み | Shift_JIS | 取り込み側がShift_JISしか読めないことが多い |
| プログラム・データベース・API | UTF-8(BOMなし) | 先頭のBOMが1列目の項目名に交じるのを防ぐ |
| Mac・Googleスプレッドシート | UTF-8 | BOMの有無に関係なく読める |
Excelで保存するときは、「名前を付けて保存」のファイルの種類で選びます。「CSV UTF-8(コンマ区切り)」はBOM付きのUTF-8、「CSV(コンマ区切り)」は日本語版WindowsではShift_JISで保存されます。改行コードは、Windowsのソフト向けならCRLF、Mac・Linuxやプログラム向けならLFが基本です。
Shift_JISに変換すると消える文字
UTF-8はほぼすべての文字を表せますが、Shift_JISで表せる文字は限られています。UTF-8のCSVをShift_JISに変換すると、表せない文字は「?」に置き換わり、元に戻せません。WindowsのShift_JIS(CP932)で表せるかどうかは次のとおりです。
| 文字 | Shift_JIS(CP932)で | メモ |
|---|---|---|
| ①・㈱・Ⅲ | 表せる | NEC特殊文字として収録。古いMacやEUC-JPでは化けることがある |
| 髙(はしごだか)・﨑(たつさき) | 表せる | IBM拡張文字として収録 |
| 𠮷(つちよし) | 表せない | 吉野家の「𠮷」など。UTF-8では4バイトの文字 |
| 🍣などの絵文字 | 表せない | 「?」になる |
| ~(全角チルダ)・-(全角マイナス) | 表せる | ただしシステムによって「〜」「−」と別の文字として扱われる |
ツールでShift_JISを選んで保存するときは、表せない文字を保存前に一覧で表示します。「髙橋,①,𠮷野家,🍣」なら「𠮷」と「🍣」の2つが出るので、「吉」に書き換える、絵文字を消すなど、取り込み先のルールに合わせて直してから保存してください。人名の旧字体は書き換えると別人の扱いになることもあるので、取り込み先に確認するのが確実です。
よくある質問
- CSVをExcelで開くと文字化けするのはなぜですか?
- UTF-8で保存されたCSVを、ExcelがShift_JISとして読んでいるためです。日本語版WindowsのExcelは、先頭にBOMのないCSVをShift_JISとして開きます。UTF-8(BOM付き)で保存し直すか、データタブから文字コードを指定して読み込めば化けません。
- BOM付きUTF-8とBOMなしUTF-8の違いは何ですか?
- ファイルの先頭にEF BB BFの3バイト(BOM)があるかどうかの違いです。中身の文字は同じですが、ExcelはBOMがあるとUTF-8として読みます。プログラムやデータベースに渡すときは、BOMが1列目の項目名に交じることがあるのでBOMなしが向いています。
- Shift_JISのCSVが必要と言われました。どう変換しますか?
- Excelなら「CSV(コンマ区切り)」で保存すると、日本語版WindowsではShift_JISになります。ブラウザで変換するなら、文字化け 復元・解読ツールの「ファイル・CSV」でShift_JISを選んで保存します。絵文字や𠮷など、Shift_JISで表せない文字は「?」になるので先に直してください。
- MacでCSVが文字化けします。
- MacのExcelでも、BOMのないUTF-8のCSVは化けることがあります。データタブから文字コードを指定して読み込むか、UTF-8(BOM付き)に変換してください。逆に、WindowsのShift_JISのCSVをNumbersなどUTF-8前提のアプリで開くと化けるので、そのときはUTF-8に変換します。
この記事で紹介したツール
あわせて読みたい
%E3%81%82・\u3042・\343の読み方|URL・JSON・gitで日本語が符号になる理由
URLをコピーしたら「%E6%96%87%E5%AD%97」、APIの返り値を見たら「\u6587\u5b57」、gitのファイル名が「\346\226\207」。どれも文字化けに見えますが、日本語が壊れたのではなく、日本語のバイトや番号を英数字で書き表した「符号」のまま見えている状態です。この記事では、よく見る9種類の書き方の見分け方と読み方、どこで出てくるのか、表示を日本語にする設定をまとめます。
記事を読む →「�」「?」の文字化けは戻せる?|欠けた文字の復元と、戻せない文字化けの見分け方
文字化けした文に「�」(黒いひし形に?)が交じっていると、もう戻せないと思いがちです。実は「�」の所で失われたのは多くの場合1バイトだけで、文字コードの決まりと前後の文脈から、元の文字をかなりの確率で推測できます。一方、「?」や「・」に置き換わって保存されたもの、「�」ばかりの文字化けは戻せません。この記事では、「�」が出る理由と推測で補える仕組み、戻せる・戻せないの見分け方、文字化けを悪化させない注意点をまとめます。
記事を読む →文字化けのパターン早見表|縺・ã・‚ƒ・$B から原因の文字コードを見分ける
「縺薙s縺ォ縺。縺ッ」「日本語」「‚±‚ñ‚É‚¿‚Í」のような文字化けは、でたらめに見えて実は規則どおりに化けています。最初に出てくる文字を見れば、どの文字コードをどれと取り違えたのかがほぼ分かります。この記事では、よく見る化け方7通りを例つきの早見表にまとめ、それぞれが起きる理由と、戻せる化け方・戻せない化け方の見分け方を説明します。
記事を読む →