【WordPress】DBの文字コード utf8 と utf8mb4について

  • 投稿 : 2016-09-07
utf8mb4_unicode_ci
utf8_general_ci

PhpMyAdminでテーブルの照合順序をみると上記のようなものが書かれているかと思う。「utf8mb4_unicode_ci」と書かれていたらDBの文字コードに「utf8mb4」が使われていると考えて間違いない

utf8 と utf8mb4について

バイト数

utf8 =>1文字最大3バイト
utf8mb4 =>1文字最大4バイト(絵文字対応)

バイト数が違います。

MYSQL

MySQL 5.5.3以上でないと、utf8mb4は使えません

WordPress

WordPress4.2の絵文字対応から、utf8mb4が採用されるようになりました。

古いバージョンからアップグレードするとWordpress標準のテーブルは自動でutf8mb4に変換されます。標準のテーブル以外でプラグインが独自に作成しているテーブルの場合は変換されないようです。

MYSQL(utf8mb4)でないと、Wordpressは絵文字が使えないのか?

utf8の場合は、絵文字はHTMLエンティティに変換されて格納されるので、絵文字は使えます。

その他の情報

utf8 と utf8mb4の違いによって起こる問題の一つとして、レンタルサーバーの引っ越しなどがあるかと思います。たとえば、MYSQL 5.5のところから、MYSQL 5.0のところに引っ越しとかのパターンです。

レアなケースかと思いますが、Mysql5.5で動かしていたWordpressをMysql5.3のサーバーに移したい場合、問題が起きます。
データベースの情報をダンプした(書き出した)sqlを、移行先データベースに読み込むと「Unknown character set: ‘utf8mb4’(utf8mb4は存在しない文字コードです)」とエラーが出てしまいます。

そんな場合の対応策です。
ダンプしたsqlをテキストエディタで開きます。
「utf8mb4」を「utf8」で置換します。
sqlを保存すれば完了です。
これで5.5より下のバージョンでも読み込み可能のはずです。
MySQLのutf8mb4をutf8に変換する | ウェブゴト

//1つ1つテーブルを変換
ALTER TABLE 【テーブルの名前】 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


【重要】wp-config.phpを修正
define('DB_CHARSET', 'utf8mb4');

define('DB_CHARSET', 'utf8');
【WordPress】DBの文字コードをのエラーがでたときの対処法メモ - Qiita


MySQL で utf8 と utf8mb4 の混在で起きること - @tmtms のメモ

その他

MySQL と寿司ビール問題 - かみぽわーる

スポンサーリンク