CSVが文字化けする原因|UTF-8・Shift_JIS・BOMの違い

ダウンロードしたCSVをExcelで開いたら、日本語が読めない文字に変わっていた。別のソフトでは正常に見えるのに、Excelで開くと文字化けする。そんな経験はありませんか。

CSVの文字化けでよくある原因は、ファイルを保存したときの文字コードと、開くソフトが読み取る文字コードの食い違いです。文字化けして見えていても、元のファイルまで壊れているとは限りません。

この記事では、CSVを扱うときに見かける「UTF-8」「Shift_JIS」「BOM」の違いと、文字化けを防ぐための確認方法を解説します。

CSVの文字化けは、文字を読み取るルールの食い違いで起こる

パソコンは、日本語の文字をそのままファイルへ保存しているわけではありません。決まったルールで数値の並びに置き換え、開くときに文字へ戻しています。この変換のルールが「文字コード」です。

例えば、UTF-8で保存されたCSVを、開くソフトがShift_JISとして読み取ると、元とは異なる文字や記号が表示されることがあります。

保存したときの文字コード読み取るときの文字コード表示の目安
UTF-8UTF-8正しく表示できる
Shift_JISShift_JIS正しく表示できる
UTF-8Shift_JIS日本語などが文字化けする可能性がある
Shift_JISUTF-8日本語などが文字化けする可能性がある

英数字は読めるのに、日本語だけ文字化けする場合もあります。UTF-8とShift_JISでは、一般的な半角英数字の表し方が共通している一方、日本語の表し方が異なるためです。

また、拡張子が「.csv」でも、文字コードは一つに決まりません。 同じCSVでも、作成したソフトや保存設定によって文字コードが変わります。

UTF-8・Shift_JIS・BOMは何が違う?

まず押さえたいのは、UTF-8とShift_JISは文字コードの種類で、BOMはファイルの先頭に付ける目印だということです。

用語役割CSVを扱うときのポイント
UTF-8日本語を含む多くの言語を表せる文字コードWebサービスなどとのデータ交換で使われる
Shift_JIS主に日本語を扱う文字コード既存の業務システムなどで指定されることがある
BOM文字コードなどを識別するための目印UTF-8のCSVをExcelに認識させる助けになる

UTF-8には「BOM付き」と「BOMなし」があります。どちらもUTF-8であり、表現できる文字の範囲が変わるわけではありません。

UTF-8:日本語や多言語を扱える文字コード

UTF-8は、Unicodeの文字をファイルへ保存するための方式の一つです。日本語、英語、中国語など、さまざまな言語を扱えます。Unicode公式FAQ

ただし、UTF-8で保存しておけば、どのソフトでも必ず文字化けしないというわけではありません。開く側がUTF-8として読み取る必要があります。

CSVの提供元が「UTF-8で出力しています」と案内している場合は、読み込み側でもUTF-8を選ぶことが基本です。

Shift_JIS:日本語の業務データで見かける文字コード

Shift_JISは、日本語のデータを扱うために使われてきた文字コードです。業務システムへのCSV取り込みで、現在も指定されることがあります。

注意したいのは、Windowsの設定などに表示される「Shift_JIS」が、実際には拡張された文字集合を持つ「CP932」と関係している場合があることです。Microsoftも、コードページ932をShift_JISの一種として説明しています。Microsoftのコードページ解説

変換ツールに「Shift_JIS」と「Windows-31J/CP932」の両方がある場合は、取り込み先の指定を確認しましょう。

また、UTF-8で扱える文字のすべてをShift_JISで保存できるわけではありません。絵文字や一部の漢字などが含まれていると、変換が止まったり、対応していない文字が置き換わったりする場合があります。

BOM:UTF-8だと知らせるための目印

BOMは「Byte Order Mark」の略です。UTF-8では、ファイルの先頭に付けることで、UTF-8であることを読み取り側へ知らせる目印として使われます。通常、画面上には表示されません。UnicodeのBOM解説

Microsoftは、BOM付きで保存されたUTF-8のCSVは、Excelで通常どおり開けると案内しています。BOMなしのUTF-8でも、Excelのデータ取り込み機能を使って開くことができます。Microsoft公式のCSV読み込み手順

ただし、BOMを想定していないシステムもあります。Excelで開きやすくすることと、取り込み先のシステムに適した形式にすることは、分けて考える必要があります。

なお、Shift_JISのファイルの先頭にUTF-8のBOMを付けるだけでは、UTF-8へ変換したことにはなりません。

CSVがExcelで文字化けしやすいのはなぜ?

CSVをダブルクリックして開くと、読み込み時の文字コードを自分で確認・指定する手順が省かれます。そのため、Excelが選んだ読み取り方とファイルの文字コードが合わない場合に、文字化けが起こります。

実際の動作は、Excelのバージョン、OS、ファイルの内容などによって異なります。「ExcelはUTF-8を読めない」「CSVは必ずShift_JISにすればよい」と決めつけず、読み込み設定を確認しましょう。

特に確認したいのは、次のようなケースです。

  • WebサービスからダウンロードしたCSVを直接開いた。
  • 別のパソコンでは正常に表示される。
  • 英数字は読めるが、日本語だけ読めない。
  • 元のシステムでは正常なのに、Excelに取り込むと文字化けする。

これらの場合は、元のファイルを残したうえで、文字コードを指定して読み直してみてください。

文字化けしたら、まず元ファイルを残して読み直す

文字化けした状態で上書き保存すると、誤って読み取られた文字が保存され、復元が難しくなる場合があります。最初に元のCSVをコピーし、確認用のファイルで作業しましょう。

Windows版Excelでは、次のような手順で文字コードを指定できます。メニュー名はバージョンによって異なる場合があります。

  1. Excelで空のブックを開く。
  2. 「データ」から「テキストまたはCSVから」を選ぶ。
  3. 読み込みたいCSVを選ぶ。
  4. 文字コードの設定を確認する。
  5. プレビューで日本語と列の区切りを確認し、読み込む。

UTF-8のファイルなら「65001:Unicode(UTF-8)」、日本語のWindows向けCSVなら「932:日本語(シフトJIS)」が候補になります。提供元の説明を確認し、プレビューで正しく表示される設定を選びます。財務省のCSV読み込み案内

郵便番号や商品コードなど、先頭の0を残したい列がある場合は、読み込み時のデータ型にも注意してください。文字化けと、先頭の0が消える現象は別の問題なので、文字コードを合わせるだけでは防げません。

保存するときは、CSVの使い道に合わせて選ぶ

文字コードとBOMの選択は、次に誰が、どのソフトで使うかを基準にします。

CSVの使い道選び方の目安
Excelで直接開いて確認してもらうUTF-8のBOM付きを候補にする
「UTF-8・BOMなし」と指定されたシステムへ取り込む指定どおりBOMなしで保存する
「Shift_JIS」と指定されたシステムへ取り込むCP932との違いも含め、取り込み仕様に合わせる
日本語以外の文字や絵文字も含めたい取り込み先が対応しているならUTF-8を選ぶ
提出先の指定が分からない先にマニュアルや担当者へ確認する

文字コードを変えるときは、元の文字コードで正しく読み取り、変換先の文字コードで保存する順序が大切です。文字化けした表示のままUTF-8で保存し直しても、元の日本語に戻るとは限りません。

文字コードを変えても直らない場合

正しい文字コードで読み直しても直らない場合は、元のデータがすでに変わっている可能性があります。

例えば、変換時に表せない文字が「?」へ置き換わり、その状態で保存された場合、置き換え後のファイルだけでは元の文字を特定できないことがあります。

また、見た目の異常がすべて文字化けとは限りません。

症状確認したいこと
日本語全体が読めない文字になる読み込み時の文字コード
一部の文字だけ「?」などになる過去の変換・保存で文字が失われていないか
文字が四角い枠などで表示される使用フォントがその文字に対応しているか
すべてのデータが一つの列に入るカンマやタブなど、区切り文字の設定
商品コードの先頭の0が消えるExcelによる数値への自動変換

修正を繰り返す前に、提供元からCSVを再ダウンロードしたり、未編集の元ファイルへ戻ったりすることも有効です。

CSVの修復・変換を行うときは

文字化けしたCSVを確認したい場合は、事務人の「CSV文字化け修復ツール」が作業の選択肢になります。提出先に合わせて文字コードを変更したい場合は、「TXT・CSV 文字コード変換ツール」を利用できます。

どちらの場合も、まず未編集の元ファイルを残し、処理後は見出し、日本語、人名、記号などを確認してください。文字コードの判定や変換だけで、失われた文字まで必ず復元できるわけではありません。

CSVが文字化けしたときは、上書き保存する前に、「何の文字コードで保存されたファイルを、何の文字コードで開いているか」を確認しましょう。UTF-8・Shift_JIS・BOMの役割を知っておくと、原因を切り分けやすくなります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次