文字化けがblogで起こるのを対策しました。必死にやりました。次の時に忘れている可能性が高いので、備忘録として残します。
- 状況
- かなり長い期間使っているWPを2.9.2にバージョンアップしたら、「〜」、「−」、不要な改行などが「?」表示される。
- 環境
- さくらインターネットスタンダード
- WordPress2.9.2
- MySQL5.1.42 MySQL の文字セット: UTF-8 Unicode (utf8)
- Webサーバ MySQL クライアントのバージョン: 5.1.30
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
WP2.9になりMySQLのバージョン対応が変わったため、さくらインターネットの場合5.1系をつかう必要があります。それで、同じUTF-8をつかっていたMySQL4.0系のWPで作ったblogをバージョンアップしたところ「〜」などが「?」表示されることになってしまいました。
データベースそのものの文字セットは、Japanese、utf-general-ci など 要求をみたしており、wp-config.phpの記述も設定どおりです。以前、単にDB削除、もう一回インポート、というのでOKになったことがあったのですが今回は全く駄目でした。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
以下解決編
答えは単純明快でした。文字コードの部分をキッチリ書き換えることです。
- UTF-8Nでファイル保存し、DBでImportしてOKとなりました。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
このきっかけとなったのは、次のようなテーブルを見て、wp-config.phpやphpmyadminの設定だけでは、必ずしも文字コードが思い通りにならないことがあるのがわかったことでした。
テーブルのなかの文字コードを直接書き直すのを最初やり始めたものの、中断しました。それより下の階層(meta部分など)にさらに文字コードを記述した部分があるため、見落としなどが考えられるためです。
それで、DLしたSQLファイルに該当分があるのではと見当をつけ、「ujis」を検索語にしたらかなりあったということです。もちろん、一般の原稿のなかに「Fujisawa」などとなっていたら、不要なものまで置換することになりますので、置換の対象を少し広げ、「CHARSET=ujis」としたらうまくいきました。
対象のblogは、MEのときから使い、少しずつ変遷を重ねてきたものです。文字コードももともとはEUC-JPを使い、ME版がUPDATEしなくなったころにUTF-8に変更した経過があります。
wp-config.phpやPHPMyAdminだけでは完全に文字コードをコントロールできてなかったことになります。
一つできたので、あわせて懸案となっていたほかのいくつかも同様に試してみたら、〜文字化けがなくなり、予定通りの表示を実現できました。
検索語:
〜文字化け ?に文字化け WordPress MySQL 一部文字化け utf8 UTF-8 さくらインターネット WP2.9 MySQL5