文字化けは「文字コードのずれ」で起きる
パソコンの中では、文字はすべて数字として保存されています。「この数字は、この文字」という対応表が文字コードです。文字化けは、ファイルを保存した時の対応表と、開く時に使った対応表が違うために起きます。
たとえば、「こんにちは」をUTF-8で保存したファイルを、Shift_JIS系(Windowsで古くから使われてきた方式)で読むと、次のように表示されます。
縺薙s縺ォ縺。縺ッ
文字が壊れたのではなく、同じ数字を、別の対応表で読んでいるだけなので、正しい対応表で開き直せば、元に戻ることが多くあります。
化け方で、原因の見当をつける
| 見た目 | 主な原因 |
|---|---|
| 「縺薙s…」のような、漢字とかなの羅列 | UTF-8のデータを、Shift_JIS系で読んでいる |
| 「���」「□」の羅列 | Shift_JIS系のデータを、UTF-8で読んでいる、または対応する文字がない |
| 「?」に置き換わっている | 保存の時点で、文字が失われている(元に戻せないことがある) |
| 「ã」「Ã」など、記号付きの欧文字の羅列 | UTF-8のデータを、西欧の文字コードで読んでいる |
場面別の直し方
ExcelでCSVを開いたら化けた
CSVファイルをダブルクリックで開くと、Excelが文字コードを自動判定するため、UTF-8のCSVが化けることがあります。次の手順で、文字コードを指定して読み込みます。
- Excelを開き、「データ」タブを選ぶ
- 「テキストまたはCSVから」(または「外部データの取り込み」)を選ぶ
- 対象のCSVファイルを選ぶ
- 表示されるプレビューの画面で、「ファイル元(文字コード)」を、「65001: Unicode (UTF-8)」に切り替える
- 文字が正しく表示されたことを確認して、「読み込み」を選ぶ
メニューの名称は、Excelのバージョンによって異なります。逆に、Excelで作ったCSVを他のシステムに渡して化ける場合は、保存時に「CSV UTF-8(コンマ区切り)」を選ぶと、改善することがあります。Excelの文字や数字の扱いについては、Excelの文字と数字の変換の記事も参考になります。
テキストファイルが化けた
Windowsの「メモ帳」で開くと、文字コードが右下(ステータスバー)に表示されます。別の文字コードで開き直す場合は、メモ帳の「ファイル」→「開く」の画面で、下部の「エンコード」を切り替えて開き直します。保存する時は、「名前を付けて保存」の画面で、エンコードを指定できます。
Webページが化けた
ブラウザの設定で、表示の文字コードを切り替えられるものもありますが、最近のブラウザは自動判定が優秀で、切り替え機能が見当たらないことも多くなっています。自分でサイトを運営している場合は、HTMLの <head> 内に、次の記述があるか確認してください。
<meta charset="UTF-8">
さらに、ファイル自体もUTF-8で保存されているか確認します。
メールが化けた
メールソフトの「表示」メニューなどから、文字コードを切り替えて、読めるものを探します。送信側のメールソフトが特殊な設定になっている場合は、相手に、UTF-8での再送を依頼する方法もあります。
ZIPを解凍したら、ファイル名が化けた
古い方式で圧縮されたZIPファイルを、別のOSや、解凍ソフトで開くと、ファイル名が化けることがあります。解凍ソフトに、ファイル名の文字コードを指定する設定があれば、変更を試してみてください。圧縮とアーカイブの基礎は、圧縮とアーカイブの違いで解説しています。
やってはいけないこと
- 化けた状態のまま、上書き保存する:元の情報が失われて、戻せなくなることがあります。まず、別名でコピーしてから作業してください
- 化けた文字を、手作業で打ち直そうとする:数が多い場合は、文字コードを指定して開き直すほうが、確実で早いことが多いです
- 化けたまま、ほかの人に送る:相手の環境でも、読めない可能性があります
開発・運営側:化けないためのポイント
プログラムやWebサイトを作る側は、「保存」「通信」「表示」の各段階で、文字コードをUTF-8にそろえるのが基本です。データの形式については、JSONとはの記事で、文字コードの扱いにも触れています。
振り返ると
文字化けは、データが壊れているのではなく、「読み方」が違っているだけのことが多くあります。化けたファイルは、上書きせずに、正しい文字コードを指定して開き直してみましょう。保存し直す時は、相手のソフトが対応する文字コード(多くの場合はUTF-8)を選ぶのが安心です。
関連記事:エラーメッセージの読み方