StatTraq 文字化け解消

 まず、マルチバイト文字を使うことが想定されてないということと、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 ;?>

以上で、無事日本語が問題なく使えるようになったさ!

StatTraq 日本語対応後

StatTraq 文字化け解消