仕事で作っているモバイルサイトに最近公開されたグーグルアドセンスを貼付けるということで、早速試してみた。
PC版と変わらなさそうで、ソースを貼付けるだけで広告が出るみたい。
で、はってみた。
すると、予想どおり文字化け。。。orz
うーんどうすればいいのだ。。。グーグルさんに聞いてみた。
すると、metaタグ、xmlヘッダー、HTTPレスポンスヘッダをShift_JISに設定すればいいとのこと。。。
やってみた
できねーーーー文字化けするーーー。
アドセンスを引っ張ってきているグーグルのPHPソースをみると、文字コードの指定はしていない(ソース自体はSJIS)
とういことは広告の文字コードが怪しい。みてみるとUTF-8!!!!ちょwwwwwそら文字化けするよ!!!
ということでob_start()を使ってこんな感じで強引にsmartyに埋め込んだ
{php}
function writer($text) {
$log = mb_convert_encoding($text, ‘EUC-JP’, ‘UTF-8’);
return $log;
}
ob_start(‘writer’);
/**
* アドセンスに必要なパラメータたちが並ぶ(アドセンスのページからコピペするだけなので省略しておきます)
*/
ob_end_flush();
{/php}
すると文字化けせずに表示。。。解決か?
ちなみにmb_convert_encodingの変換文字コードがEUC-JPになっていますが、このサイトはEthnaでつくっていて、基本ソースはEUC-JPそのごsmartyのoutput_filterでShift_JISに変換しているためです。
ここはサイトによって適当にかえてください。
広告張るたびにこれを書くのは面倒なのでsmartyのプラグイン関数でも作るか。。。もしくはそんなクラス。
ほかに何かいい方法あったら教えてください(もしかして他の人は文字化けすら起きていないのかなー)