Akismet を有効にしているとコメントが文字化けしてしまいます
-
初めまして、いろいろと調べたのですが解決出来ない問題がありましたので皆様の助言をいただければと思い書き込みます。
環境
WordPress 2.7.1 UTF-8 PHP 5.2.9 MySQL 4.1.22-standard Apache 2.2.11問題
投稿されたコメントが文字化けしてしまう問題に遭遇しています。
その文字化けというのは、 MySQL データベース上で既に文字化けしていてブラウザの文字コードを変更しても、正しく表示することが出来ない不可逆的な文字化けのようです。ちなみに、英数字は OK で日本語がダメです。
コメント関連のプラグインは以下のものを入れています- Akismet
- Geo Captcha
- Get Recent Comments
そこで、一つずつ外してみた所 Akismet を外すと文字化けしないことが分かりました。
しかし、 Akismet はこの3つのプラグインの中で一番昔から使用していて、リストの順に追加していったのですが、以前は文字化けすることもありませんでした。
気になるのは、以前投票プラグインの Democracy を導入した時に同様の問題が発生し、その時はプラグインを停止した後に MySQL のデータベーステーブルの文字コードを変更して修復した覚えがあるのですが詳しいことまでは覚えていません。Akismet を停止したままにするのは非常に心もとないので、出来れば Akismet を使用し続けたいのですが、この問題を解決するために確認した方が良いことなどありますでしょうか?
環境などについて足りないことがありましたら、追加いたしますので助言をいただけたらと思います。
-
なんか変ですね。Akismet 自体は文字コード変換を行いませんので。
おそらく、他のコメント関連プラグインで wp_comments テーブルを改造してしまう (ALTER TABLE する) ものが、テーブルの文字コードをいじってしまったのだと思います (海外製のだと、文字コードの処理がいい加減です)。phpMyAdmin や mysql クライアントで wp_comments テーブルの照合順序が utf8_general_ci になっているか確認してみてください。各カラムも同様に確認してください。
lilyfan さん
ありがとうございます。wp_comments テーブルを確認しましたが、文字コードは utf8_general_ci となっており問題はなさそうです。
以前同様の問題が起きた時は、ここが変更されていたと思います。また、その後に分かったことは
WordPress が MySQL からのデータの取得に失敗して(大抵、 MySQL のレスポンスが遅い時のようですが)カテゴリー名やコメントなど MySQL から取得するデータがすべて ??? と表示されることが時々あり、リロードすると普通に表示されるのですが
その、 ??? と他の文字が文字化けしている時に、件の文字化けコメントだけが正常に表示されていました。これは何を意味するのでしょうか? どこかで PHP の文字コード処理に齟齬が起きていそうな感じですがどこが引っかかっているのか見当がつきません・・・
解決しました〜
私はすっかり wp_comments テーブルばかり見ていたのですが
問題は- wp_
- wp_blc_linkdata
- wp_blc_postdata
という、テーブルおよびフィールドの照合順序が latin1_general_ci になっていたためでした。
何のテーブルなのか分からないのですが、とにかく解決です。最後に、もしご存知の方がいらっしゃれば教えて欲しいのですが
文字化けしてしまったコメントを復号することは出来るのでしょうか?この場合、 latin1_general_ci と utf8_general_ci を変換出来るような SQL があれば良さそうな気がするのですが、その辺りを知らないので 教えていただけると幸いです。
上に記した、時々ある MySQL からの読み出しエラー?のようなものに再び遭遇して、文字化けしたコメントを復帰させることが出来ました。
何だかすっきりしませんが解決とさせていただきます。
- トピック「Akismet を有効にしているとコメントが文字化けしてしまいます」には新たに返信することはできません。