文字化けは文字コードの不一致で起こります。文字をどの規則で数字に置き換えるかが、保存時と表示時で食い違うと、意味不明な記号の羅列になります。ここではどこで化けているかを切り分ける手順と、それぞれの対処を解説します。管理画面全体の使い方は使い方ピラーをご覧ください。

まず「どこで化けているか」を特定してください。サイトの表示、メール、データベース、アップロードしたファイル。それぞれ原因も対処も違います。日本語サイトの標準はUTF-8で、これに統一するのが基本の考え方です。データベースの文字化けだけは復旧が難しいため、バックアップからの復元を先に検討してください。

文字コードとは

文字化けを理解するには、この仕組みを知っておくと早くなります。

コンピュータは文字を数字として扱います。「あ」という文字をどの数字に対応させるか、そのルールが文字コードです。

日本語で使われる主な文字コードです。

文字コード特徴
UTF-8現在の標準。世界中の文字を扱える
Shift_JIS古いWindows環境で使われた
EUC-JP古いUNIX環境で使われた
ISO-2022-JPメールで使われた

保存したときのルールと、読むときのルールが違うと文字化けします。UTF-8で保存したファイルをShift_JISとして読むと、まったく別の文字に見えるわけです。

現在はUTF-8に統一するのが基本です。新しく作るものはすべてUTF-8にしてください。

どこで化けているかを特定する

  1. 1
    サイトの表示が化けているか
    ブラウザでサイトを開いて確認。一部だけか、全体かも見る
  2. 2
    管理画面は化けていないか
    WordPressの管理画面で記事を開く。ここで正常なら表示側の問題
  3. 3
    メールが化けているか
    送信・受信のどちらで化けるかを確認
  4. 4
    アップロードしたファイルか
    最近アップロードしたファイルだけ化けていないか
  5. 5
    いつから化けているか
    直前に何をしたか。移行、ファイルのアップロード、設定変更
ブラウザで文字化けしたページのイラスト
文字コードが合わないと、本文が読めない記号の羅列になる(イメージ図)。

ケース1:アップロードしたファイルが化ける

もっとも多く、もっとも直しやすいケースです。

原因

  • ファイルの文字コードがUTF-8以外で保存されている
  • FTPの転送モードが適切でない

対処

  1. ファイルの文字コードを確認する
    テキストエディタでファイルを開き、文字コードを確認してください。多くのエディタでは画面下部などに表示されます。

  2. UTF-8(BOMなし)で保存し直す
    エディタの「名前を付けて保存」や「エンコーディングを変更して保存」から、UTF-8を選んで保存します。

「BOMなし」を選んでください。BOM(Byte Order Mark)という目印が先頭に入ると、PHPファイルの場合に予期しない出力が発生し、エラーの原因になることがあります。エディタによっては「UTF-8」と「UTF-8 with BOM」が別項目になっています。

  1. FTPの転送モードを確認する
    FTPソフトには転送モード(アスキー/バイナリ/自動)の設定があります。バイナリまたは自動にしておくと、転送中にファイルが変換されて壊れるのを防げます。FTPの使い方はFTPの記事にまとめています。

  2. 再アップロードする
    保存し直したファイルをアップロードして、表示を確認します。

ケース2:サイト全体が化ける

原因

  • HTMLの文字コード宣言と実際の文字コードが違う
  • .htaccess の文字コード設定
  • テーマファイルの文字コード

対処

1. HTMLの文字コード宣言を確認する
HTMLファイルの先頭付近に、文字コードを宣言する記述があります。ここが実際のファイルの文字コードと一致しているかを確認してください。

  1. WordPressの場合
    テーマファイルの文字コードを確認します。自分で編集したファイルがShift_JISで保存されていると、その部分だけ、あるいは全体が化けることがあります。

  2. .htaccess の設定を確認する
    .htaccess で文字コードを指定している場合、それが原因のことがあります。

.htaccess を編集する前に、必ず元のファイルをダウンロードしてください。1文字の誤りでサイト全体が500エラーになります。対処は500エラーの記事にまとめています。

ケース3:メールが化ける

送信したメールが相手先で化ける

原因:メールソフトの送信文字コード設定、または機種依存文字の使用。

対処

  1. メールソフトの送信文字コードを確認する(UTF-8が無難)
  2. 機種依存文字を使わない。丸囲み数字、ローマ数字、単位記号などは環境によって化けます
  3. 相手の環境を確認する

受信したメールが化ける

原因:送信側の文字コード設定、またはメールソフトの表示設定。

対処

  1. メールソフトの文字コード設定を確認する
  2. Webメールで開いてみる。そちらで正常ならメールソフト側の問題です
  3. 送信者に確認する

メール設定全般はメール設定の記事にまとめています。

Webメールで開いて正常かどうかは、切り分けに有効です。Webメールで正常ならサーバーには問題がなく、メールソフトの設定の問題だと分かります。使い方はWebメールの記事へ。

ケース4:データベースの中身が化ける

これがもっとも厄介なケースです。

原因

  • データベースの文字コード設定と、保存されたデータの文字コードが不一致
  • 他社サーバーからの移行時にエクスポート・インポートの文字コードが揃っていなかった

対処

データベースの文字化けは、無理に直そうとしないでください。変換を繰り返すと、元に戻せない状態になることがあります。
まずバックアップからの復元を検討してください。エックスサーバーは14日分の自動バックアップを保持し、復元は無料です。化ける前の状態に戻せる可能性があります。

移行作業中に気づいた場合は、移行をやり直すほうが確実です。

  1. 移行元のデータが無事なことを確認する
  2. エクスポート時の文字コードを確認する(UTF-8)
  3. インポート先のデータベースの文字コードを確認する(UTF-8)
  4. やり直す

移行の手順はWordPressの引っ越し、サーバー移転の記事にまとめています。

ケース5:管理画面は正常だが表示だけ化ける

WordPressの管理画面では正しく表示されるのに、公開ページだけ化けるケースです。

原因:テーマファイルの文字コード、またはテンプレートに直接書いた日本語部分の文字コード。

対処:テーマファイルをUTF-8(BOMなし)で保存し直します。自分で編集したファイルが原因であることがほとんどです。

予防策

文字化けは予防できるトラブルです。

  1. すべてUTF-8で統一する。ファイル、データベース、メール設定
  2. エディタの既定の文字コードをUTF-8に設定する
  3. BOMなしを選ぶ。PHPファイルでは特に重要
  4. 機種依存文字を使わない。丸囲み数字、ローマ数字など
  5. 移行作業では文字コードを確認する。エクスポートとインポートの両方
  6. 編集前にバックアップを取る

症状別の早見表

症状疑うところ最初に試すこと
アップロードしたファイルだけ化けるファイルの文字コードUTF-8(BOMなし)で保存し直す
サイト全体が化けるHTMLの宣言、テーマファイル文字コード宣言を確認
一部のページだけ化けるそのページのファイル該当ファイルの文字コード
メールが化けるメールソフトの設定Webメールで確認
データベースが化ける移行時の文字コードバックアップから復元
管理画面は正常、表示だけ化けるテーマファイルテーマの文字コード
移行後に化けた移行時の設定移行をやり直す

まとめ

文字化けは文字コードの不一致で起こります。日本語サイトの標準はUTF-8なので、これに統一するのが基本です。

対処の前に「どこで化けているか」を特定してください。サイトの表示、メール、データベース、アップロードしたファイル。それぞれ原因も対処も違います。

アップロードしたファイルが化けるケースがもっとも多く、もっとも簡単に直せます。UTF-8(BOMなし)で保存し直してアップロードするだけです。

データベースの文字化けだけは、無理に直そうとしないでください。変換を繰り返すと元に戻せなくなります。バックアップからの復元を先に検討してください。エックスサーバーは14日分を保持し、復元は無料です。

予防としてはすべてUTF-8で統一することと、機種依存文字を使わないことの2つが効きます。

ファイル操作はFTPの記事、メール設定はメール設定の記事、移行作業はWordPressの引っ越しをご覧ください。