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で開いたときが大半です。
- ファイルはどこかへ送られますか?
- 送られません。文字コードの判定も変換も、ブラウザの中だけで行います。顧客名簿のようなファイルでも扱えます。
この記事で使う道具
記事で紹介しているツールは、すべて登録不要・ブラウザ内で動きます。