まず、マルチバイト文字を使うことが想定されてないということと、Search Terms のエンコードをうまく読み取ってないことが原因のようだった。
ページアクセス数のリスト部分の問題に関しては、htmlentities関数は、htmlspecialchars関数に置き換えれば問題なくなるということなので、grepかけて全部置換してやりますた。よく分からなかったら、StatTraqオリジナル版で日本語表示に詳しく書かれてます。分かりやすい!
Summaryの Most Viewed Post は文字化けしてないのに、Referrersだけ文字化けしてるのはなんだろうなぁ、と思ってブラウザの文字コードを変えてみたら、EUC-JPで見たらReferrersの文字を読むことが出来た。全体のエンコードはUTF-8になってるので、ここを変換すればOKぽ。mb_convert_encoding関数を使う。
$search_phrase = urlencode($row->search_phrase);
reportar/summary.phpというファイルに上のような行があるが、そこを以下のように変更した。
$search_phrase = urlencode($row->search_phrase);
$row->search_phrase = mb_convert_encoding($row->search_phrase,"UTF-8","EUC-JP");
これで無事日本語が表示されるようになりました♪
表示はうまくいった~。と喜んでいたが、検索サイトへリンクされているところをクリックしても文字化けしたものが検索されてしまって話にならない!
そこで、先ほど変更した部分を
$row->search_phrase = mb_convert_encoding($row->search_phrase,"UTF-8","EUC-JP");
$search_phrase = urlencode($row->search_phrase);
と変更した。真ん中の列の "Term" は Google の検索に直接つながっているので、これで検索可能になる。Google.com も日本語で検索すればちゃんと日本語のページが出てくる。問題は、 Yahoo! と MSN である。 yahoo.com, msn.com は英語な上に日本語いれてもうまく検索してくれないらしい。そこで、日本の Yahoo! MSN で検索して、URLを調べてみた。
Yahoo! のURI修正
http://search.yahoo.com/search?p=< ?php echo $search_phrase;?>
↓
http://beta.search.yahoo.co.jp/search?ei=UTF-8&fr=sfp&p=< ?php echo $search_phrase;?>
MSN のURI修正
http://search.msn.com/results.aspx?q=< ?php echo $search_phrase ;?>
↓
http://search.msn.co.jp/results.aspx?v=1&RS=CHECKED&CY=ja&FORM=MSNH&q=< ?php echo $search_phrase ;?>
以上で、無事日本語が問題なく使えるようになったさ!
はじめまして、chameleonです。
トラックバックどうもです!
より完全な日本語対応を紹介していただいてありがとうございます。
そのあたりを、エンコードしてやればよかったんですね。検索エンジン対応もばっちりです。
勉強になりました。
これからもよろしくお願いします。
いえいえ、こちらこそ勉強になります。
日本語化があまり進んでいないツールだけにネット上に情報が少なく、
とても参考になりました!
これからもちょくちょく覗かせてもらうんで、よろしくお願いします^^