事務ツール

CSV を Excel で開くと文字化けする理由と直し方

取引先や Web サービスから受け取った CSV をダブルクリックで開くと、日本語が読めない記号の列になる。原因はほとんどの場合、ファイルの「文字コード」の食い違いです。

原因:書いた側と読んだ側で文字コードが違う

文字コードは、文字をファイルの中の数値に置き換える約束です。日本語の CSV でよく使われるのは次の 2 つです。

日本語版の 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 に変換すると、こうした文字は「?」などに置き換わります。変換ツールでは、置き換えた文字が何行目の何文字目かを一覧で示すので、元のファイルで別の文字に直してから変換し直せます。

参考にした資料