0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPress.comのデータベースの中身がローカルで文字化けするときの対処

Posted at

発生した問題

WordPress.comのデータベースの中身をローカル環境(Localを使用)に反映する際
日本語の部分が文字化けしてしまった。
(タイトル、本文などすべて「???」となってしまった)

DBのエクスポートは普段どおりWP管理画面の設定のところからphpmyadminに入り、
sql, gzipなどの形式でエクスポートした(それでうまく行く場合がほとんど)。

格闘すること半日、原因が特定できた。

原因・解決方法

結論

ローカル環境のwp-config.phpの、以下の部分を'latin1'に書き換えた。
define( 'DB_CHARSET', 'utf-8' );

define( 'DB_CHARSET', 'latin1' );

詳細

文字コードの設定は以下の通りである。

本番環境:

・wp-config.php:DB_CHARSETの記述なし
・データベース:「latin1_swedish_ci」(mysqlのデフォルト設定がこれらしい。)

修正前のローカル環境

・wp-config.php:'DB_CHARSET', 'utf-8'
・データベース:「latin1_swedish_ci」(localのAdminerEvoで「照合順序」をチェック)

修正後のローカル環境

・wp-config.php:'DB_CHARSET', 'latin1'
・データベース:「latin1_swedish_ci」

つまり、私のローカルで wp-configに書かれているDB_CHARSET(UTF-8)と
AdminerEvoのデータベースの「照合順序」(latin1)がチグハグになっていたため発生した問題と思われる。

だいぶパニクっていろいろ設定をいじっていたので 記憶違いもあるかもしれないが
少なくとも 私の環境ではこの設定を機に文字化けが修復できた。

追記:
あとからみると ローカルの「照合順序」が utf8_unicode_ci になっていた。
もはや仕組みはよくわからないが、いったんローカルで文字コードの辻褄を合わせたあとで
実態に即した utf8 へDBが自動的に?更新されるのかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?