ガイド

CSV の日本語が文字化けや「?」になる原因と直し方

顧客一覧を出力して別の場所で開くと、「山田太郎」が文字化けや疑問符になりました。 データが壊れたとは限りません。 書き込み時とは別の文字コードでバイトを読んだだけの場合があります。

更新日:

原因は同じ文字に異なる文字コードを使うこと

CSV は単なるテキストで、文字コードの説明を持たないことがあります。 現在は UTF-8 が一般的で、日本語 1 文字を複数バイトで表します。 古い日本語 Windows ソフトは Shift_JIS を使い、旧版 Excel もシステムのコードページから推測することがあります。

UTF-8 を Shift_JIS として読むと、日本語は無関係な文字の並びになります。 Shift_JIS を UTF-8 として読めば不正なバイトとなり、疑問符、代替記号、文字化けとして表示されます。

よくある状況

通販サイト、CRM、ウェブフォームが UTF-8 を出力しても、ダブルクリックした Excel が古いコードページで開けば文字化けします。 Excel の版によっては、先頭に BOM という見えない印がある場合だけ UTF-8 と自動判定します。

逆に、Excel が従来形式の CSV として Shift_JIS を保存し、UTF-8 前提のニュースレターソフトやスクリプトへ入れると疑問符になることがあります。

区切り文字も別の問題を起こします。 コンマ、セミコロン、タブの判定を誤ると全項目が 1 列に入りますが、これは文字コードの破損ではありません。

Excel で UTF-8 ファイルを正しく開く

ダブルクリックではなくインポートします。 これなら Excel の推測に任せず、文字コードと区切りを指定できます。

  1. Excel で空のブックを開きます。
  2. 「データ」から「テキストまたは CSV から」を選び、ファイルを指定します。
  3. 「元のファイル」を「65001: Unicode (UTF-8)」にし、山田太郎が正しく見えるかプレビューします。
  4. 列が分かれていなければ適切な区切り記号を選び、データを読み込みます。
  5. 次のソフトでも読めるよう、保存時は「CSV UTF-8」を使います。

古い Excel CSV を UTF-8 に変える

Shift_JIS の古いファイルは、Excel のインポートで Shift_JIS または日本語のコードページを明示し、「CSV UTF-8」で保存し直すのが基本です。 データ形式変換ツールは UTF-8 を試した後、失敗時に Windows-1252 へ戻るだけで、Shift_JIS は読めません。 日本語 CSV の修復には使わないでください。 有効な UTF-8 または Windows-1252 なら、CSV や JSON などの UTF-8 を出力し、コンマ、セミコロン、タブを判定できます。

誤った向きで何度も変換すると文字を完全に壊すことがあります。 必ず最初の出力ファイルから始め、コピーも残してください。

内容が変わっていないか確認する

変換後は、文字コードだけが変わり内容は同じか調べます。 顧客番号などをキーにして2 つの CSV を比較すると、変更セル、追加行、不足行が一覧になり、利用開始前に誤った取り込みを見つけられます。

今すぐ処理

ほかのガイド