システムから出力したデータを開いたら、文字が意味不明の記号になっていた。そんな経験は、多くの人にあるのではないでしょうか。この記事では、CSV・Excel・JSONの性格の違いと、文字化けが起きる仕組み、直し方、そして、相手が困らない形式の選び方を解説します。

CSV・Excel・JSONは何が違うのか

  • CSV:カンマで区切った文字だけのファイルです。どんなソフトでも開けますが、色や列の幅、数式、複数のシートといった情報は持てません。
  • Excel:表の値に加えて、書式、数式、複数のシートを持てます。人が見て、編集するのに向いた形式です。
  • JSON:情報を入れ子(階層)にして持てる形式で、プログラムやアプリの間で、データをやりとりする時によく使われます。

同じ表のデータでも、CSVは軽くてどこでも読めますが、情報が少なく、Excelは情報が多いぶん、対応するソフトが限られます。JSONは、階層のあるデータを、そのまま表せるのが強みです。

文字化けが起きる仕組み

コンピューターは、文字を、番号として記録しています。どの文字にどの番号を振るかの決まりが、文字コードです。文字コードには、いくつも種類があり、日本語では、主に「Shift_JIS」と「UTF-8」が使われてきました。

CSVのファイルには、どの文字コードで書いたかという情報が、含まれていません。そのため、開くソフトが、文字コードを推測します。推測が外れると、別の文字コードの番号として読んでしまい、文字化けが起こります。

日本語版のWindowsのExcelは、目印のない CSV を、Shift_JISだと考えて開く傾向があります。一方、いまのウェブや多くのシステムは、UTF-8で書き出します。このずれが、日本語のWindows環境で、文字化けが起きやすい理由です。UTF-8のファイルの先頭に、目印(BOM)を付けると、Excelが、UTF-8だと気づける場合があります。

実際に文字化けして困った場面と、どう直したか

ダウンロードしたCSVをExcelでそのまま開いたら、日本語の列がすべて「譁蟄怜喧縺」のような記号の羅列になっていたことがあります。数字の列は正常なのに、日本語だけが読めない状態でした。

最初はファイルが壊れたと思い、ダウンロードし直しましたが同じでした。

解決したのは、ダブルクリックで開くのをやめて、Excelを先に起動してから「データ」→「テキストまたはCSVから」で読み込む方法です。この時に文字コードを「65001: Unicode (UTF-8)」に指定すると、日本語が正しく表示されました。

ファイルは壊れていなかった、というのが分かるまでが一番不安でした。

文字化けした時の対処

  • Excelで開き直す:Excelを開き、「データ」のタブから「テキストまたはCSVから」を選び、ファイルを指定します。「元のファイル」の欄で「65001: Unicode (UTF-8)」を選んで読み込みます。Excelのバージョンによって、名前や手順が異なる場合があります。
  • メモ帳で保存し直す:CSVをメモ帳で開き、「名前を付けて保存」の画面で、文字コードを「UTF-8(BOM付き)」にして保存します。表示は、Windowsのバージョンによって異なります。その後、Excelで開きます。
  • Excelから書き出す時:「名前を付けて保存」で、ファイルの種類に「CSV UTF-8(コンマ区切り)」を選ぶと、UTF-8で書き出せます。

なお、Excelで開くと、郵便番号や電話番号の先頭の「0」が消えることがあります。これは文字化けではなく、数字として読み取られるためです。この場合も、上の「テキストまたはCSVから」の手順で、列の形式を「テキスト」にすると、防げる場合があります。

どの形式で渡すと、相手が困らないか

渡す相手と、使い道で選ぶのが基本です。人が見て編集するなら、Excel(.xlsx)が向いています。システムに取り込むなら、その仕様に合わせて、CSVかJSONを選びます。プログラムやAPIで読むなら、JSONが扱いやすいことが多いです。

CSVで渡す時は、文字コードを、あらかじめ相手に確認しておくと、安心です。指定がなければ、UTF-8を選び、Excelで開く人には、BOM付きだと開きやすい場合があります。迷った時は、相手に、どの形式が扱いやすいかを尋ねるのが、いちばん確実です。

データを渡して困った・助かった経験

相手に合わせて形式を変えるようになったのは、一度失敗してからです。

Excelファイルで作った一覧を渡したところ、相手のシステムに取り込めず、「CSVでもらえますか」と差し戻されました。こちらとしては見やすいように色をつけたり列幅を整えたりしていたのですが、取り込む側にとってはそうした装飾がむしろ邪魔だったわけです。

逆に、人が目で見て確認する資料をCSVで渡してしまい、「見づらいのでExcelにしてほしい」と言われたこともあります。

今は渡す前に「これは人が見るものか、機械が読むものか」を一度考えるようにしています。それだけで往復がほとんどなくなりました。

まとめ

CSVは文字だけ、Excelは書式や数式まで、JSONは入れ子まで持てる形式です。文字化けは、文字コードのずれで起こり、日本語のWindowsでは、UTF-8のCSVをShift_JISと推測されることが主な原因です。Excelの「テキストまたはCSVから」や、メモ帳でのBOM付き保存で、直せる場合があります。渡す時は、相手の使い道に合わせて選びましょう。