サク箱

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

原因は文字コード。開き方を変えるか、ファイル側を直すかの2通り

更新日:

なぜ化けるのか

文字は、数字の並びとしてファイルに入っています。その対応表が文字コードです。書いた側と読む側で違う表を使うと、同じ数字が別の文字として出てきます。これが文字化けです。

日本語のCSVでは、UTF-8とShift_JISの2つがよく使われます。Excelは、何も目印が無いCSVをShift_JISだと思って開くことがあり、UTF-8で書かれたファイルが化けます。

いちばん確実なのは、ファイル側を直すこと

CSVの文字コードを変換で、BOM付きUTF-8に変換してください。BOMは先頭に付ける数バイトの目印で、Excelはこれを見て正しく開きます。中身の文字は変わりません。

読み込む側の文字コードは、中身を見て自動で判断するので、指定は要りません。壊れていて判断できないファイルは、化けた結果を黙って返さずにそう表示します。

相手がShift_JISしか受け付けないとき

古い基幹システムや、一部の公的な申請では、Shift_JISを指定されることがあります。その場合は同じツールでShift_JISへ変換してください。

ただしShift_JISには、絵文字や一部の漢字(𠮷など)がありません。そのまま書くと化けるため、書けない文字がある場合は実行の前にお知らせします。氏名の漢字が化ける場面では、ここでつまずくことが多いです。

開き方を変えるだけで済むこともある

Excelでは、ファイルをダブルクリックせず、「データ」タブからテキストとして読み込むと、文字コードを選んで開けます。1回きりなら、この方法でも構いません。

何度も受け渡しするなら、ファイル側を直したほうが早いです。渡すたびに相手へ開き方を説明する手間がなくなりますし、相手が別の人に転送したときにも化けません。

化けていないのに、値が変わってしまう

文字は読めるのに、郵便番号の先頭の0が消える、商品コードが指数表示になる、という問題は文字コードとは別です。Excelが数値だと判断して変換してしまうためです。

当サイトのExcelをCSVに変換は、数字に見える文字列を勝手に数値へ変えません。CSVの中には0が残っているので、Excelで開くときに「文字列」として読み込んでください。

渡す前に、相手の環境を1つだけ聞く

「ExcelでダブルクリックしてOK」なのか、「システムに取り込む」のかで、選ぶべき文字コードが変わります。前者ならBOM付きUTF-8、後者は相手の指定どおりにしてください。これを先に聞くだけで、やり直しがほぼ無くなります。

社内で定期的にやり取りするファイルは、いったん決めた形式を文書に残しておくと、担当が変わっても同じところでつまずかずに済みます。

区切りと改行も確かめる

タブ区切り(TSV)をCSVとして開くと、すべてが1列に入ります。区切りを変えたいときはCSVの区切り文字を変換をお使いください。

中身を見てから直したいときは、CSVを表として見るで表として確かめられます。文字コードの取り違えは、1行目を見ればすぐ分かります。

よくある質問

BOMを付けると、ほかのソフトで問題になりませんか?
多くのソフトは無視します。ただし、古いプログラムや一部の取り込み処理では、1列目の見出しに余分な文字が付いたように見えることがあります。その場合はBOM無しを選んでください。
変換すると中身が変わりますか?
変わりません。文字コードを移すだけで、行・列・値はそのままです。
Googleスプレッドシートでも化けますか?
こちらはUTF-8を正しく読むため、化けることはほとんどありません。化けるのはExcelで開いたときが大半です。
ファイルはどこかへ送られますか?
送られません。文字コードの判定も変換も、ブラウザの中だけで行います。顧客名簿のようなファイルでも扱えます。

この記事で使う道具

記事で紹介しているツールは、すべて登録不要・ブラウザ内で動きます。