MAMP の MySQL で照合順序が latin1 のデータベースを作成してしまったときの対処法

MAMP を使いローカル環境で WordPress をインストールしたところ、wp-config.php 内の文字コード設定(下記参照)を削除してしまったらしく、MySQLの照合順序が latin1 となってしまいました。

/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
照合順序が「latin1_swedish_ci」に…

照合順序が「latin1_swedish_ci」に…

そのままの状態で phpMyAdmin でデータベース内を見ると文字化けしていませんでしたが、サイト上では盛大に文字化け。逆に、管理画面からデータを登録し直すと phpMyAdmin で見たときに盛大に文字化けするという事態に陥ってしまいました。

文字化けしている…

文字化けしている…

こういうときは、一旦データベースのデータをダンプし、ダンプデータ内の文字コード設定を変更してから再度インポートしなおせば大丈夫です。

# latin1 で一旦ダンプする
/Applications/MAMP/Library/bin/mysqldump --user=ユーザー名 --password=パスワード --default-character-set=latin1 データベース名 > データベース名.sql

dumpファイルの中のlatin1をutf8に置換

/*!40101 SET NAMES latin1 */;
↓
/*!40101 SET NAMES utf8 */;

/*!40101 SET character_set_client = latin1 */;
↓
/*!40101 SET character_set_client = utf8 */;

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
↓
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。