「〜」文字化け対策

文字化けがblogで起こるのを対策しました。必死にやりました。次の時に忘れている可能性が高いので、備忘録として残します。

  • 状況
    • かなり長い期間使っているWPを2.9.2にバージョンアップしたら、「〜」、「−」、不要な改行などが「?」表示される。
  • 環境

WP2.9になりMySQLのバージョン対応が変わったため、さくらインターネットの場合5.1系をつかう必要があります。それで、同じUTF-8をつかっていたMySQL4.0系のWPで作ったblogをバージョンアップしたところ「〜」などが「?」表示されることになってしまいました。
データベースそのものの文字セットは、Japanese、utf-general-ci など 要求をみたしており、wp-config.phpの記述も設定どおりです。以前、単にDB削除、もう一回インポート、というのでOKになったことがあったのですが今回は全く駄目でした。

                                • -

以下解決編
答えは単純明快でした。文字コードの部分をキッチリ書き換えることです。

  • DBからExportしSQLファイルを保存。
  • DBから関係のテーブル削除。
  • TerapadSQLファイルの文字コード関係部分を「置換」(次の画像参照)

  • UTF-8Nでファイル保存し、DBでImportしてOKとなりました。
                                • -

このきっかけとなったのは、次のようなテーブルを見て、wp-config.phpphpmyadminの設定だけでは、必ずしも文字コードが思い通りにならないことがあるのがわかったことでした。

テーブルのなかの文字コードを直接書き直すのを最初やり始めたものの、中断しました。それより下の階層(meta部分など)にさらに文字コードを記述した部分があるため、見落としなどが考えられるためです。
それで、DLしたSQLファイルに該当分があるのではと見当をつけ、「ujis」を検索語にしたらかなりあったということです。もちろん、一般の原稿のなかに「Fujisawa」などとなっていたら、不要なものまで置換することになりますので、置換の対象を少し広げ、「CHARSET=ujis」としたらうまくいきました。
対象のblogは、MEのときから使い、少しずつ変遷を重ねてきたものです。文字コードももともとはEUC-JPを使い、ME版がUPDATEしなくなったころにUTF-8に変更した経過があります。
wp-config.phpPHPMyAdminだけでは完全に文字コードをコントロールできてなかったことになります。
一つできたので、あわせて懸案となっていたほかのいくつかも同様に試してみたら、〜文字化けがなくなり、予定通りの表示を実現できました。
検索語:
〜文字化け ?に文字化け WordPress MySQL 一部文字化け utf8 UTF-8 さくらインターネット WP2.9 MySQL5