CSV を Excel で開くと文字化けする理由と直し方
取引先や Web サービスから受け取った CSV をダブルクリックで開くと、日本語が読めない記号の列になる。原因はほとんどの場合、ファイルの「文字コード」の食い違いです。
原因:書いた側と読んだ側で文字コードが違う
文字コードは、文字をファイルの中の数値に置き換える約束です。日本語の CSV でよく使われるのは次の 2 つです。
- UTF-8:多くの Web サービスや新しいソフトが使う。世界中の文字を表せる。
- Shift_JIS(Windows では CP932 とも):古くからの日本の業務ソフトや、日本語版 Excel が CSV を保存するときに使う。
日本語版の Excel は、CSV をダブルクリックで開くと、基本的に Shift_JIS として読みます。そのため UTF-8 で書かれた CSV は化けます。ただし、ファイルの先頭に BOM(UTF-8 であることを示す 3 バイトの目印)があれば、Excel は UTF-8 として正しく読めます。
化け方で見分ける
| 見え方 | 起きたこと | 戻せるか |
|---|---|---|
| 「縺薙s縺ォ縺。縺ッ」のような漢字と半角カナの混ざり | UTF-8 の文章を Shift_JIS として読んだ | 元のファイルなら開き直せば戻る。この状態で保存してしまっても、多くは戻せる(一部の文字は失われる) |
| 「�」や「?」が並ぶ | Shift_JIS の文章を UTF-8 として読んだ | 保存してしまうと戻せない。元のファイルから開き直す |
上の例は「こんにちは」を UTF-8 で書き、Shift_JIS として読んだときの実際の見え方です。
直し方
1. ファイルを BOM 付き UTF-8 に変換する(いちばん確実)
CSV 文字化け・文字コード変換 にファイルを入れて「UTF-8(BOM 付き)」を選ぶと、ダブルクリックで開いても化けない CSV になります。ファイルは送信せず、ブラウザの中だけで変換します。
2. Excel の読み込み機能で文字コードを指定する
Excel の「データ」タブにある、テキストや CSV から取り込む機能を使うと、取り込むときに元のファイルの文字コード(UTF-8 なら「65001: Unicode (UTF-8)」)を選べます。画面の名前は Excel の版によって違います。
3. 渡す相手に合わせて保存する
古い会計ソフトや銀行のシステムに渡す CSV は、Shift_JIS を求められることがよくあります。逆に Web サービスに取り込むなら UTF-8 が無難です。迷ったら、渡す先の説明書に書かれた文字コードに合わせてください。
Shift_JIS にすると消える文字
Shift_JIS は UTF-8 より表せる文字が少なく、絵文字や「𠮷」(つちよし)のような一部の漢字は表せません。UTF-8 から Shift_JIS に変換すると、こうした文字は「?」などに置き換わります。変換ツールでは、置き換えた文字が何行目の何文字目かを一覧で示すので、元のファイルで別の文字に直してから変換し直せます。