一番ネックだったのは、JoomlaはHTTPヘッダで指定している文字コードがUTF-8にハードコードされている為、そこをShift_jisに変更してやらないと、文字コードをShift_jisに変換しても、文字化けが発生してしまう事でした。
色々とググってみたところ、HTTPヘッダに吐き出される文字コードを指定している箇所を
libraries/joomla/factory.php
にて発見。
このファイル内で、変更してやります。
factory.phpの変更
694行目あたりから
$attributes = array (
'charset' => 'utf-8',
'lineend' => 'unix',
'tab' => ' ',
'language' => $lang->getTag(),
'direction' => $lang->isRTL() ? 'rtl' : 'ltr'
);
このcharsetをShift_jis(SJIS-win)に変えてやります。
端末のUSER AGENTを取得して、DoCoMoかKDDIの場合はShift_jisにしてやるような感じに。SoftbankはUTF-8でおkなので、DoCoMoとKDDIだけです。
$uagent = $_SERVER['HTTP_USER_AGENT'];//UA取得
if(preg_match('/^DoCoMo|^KDDI/i', $uagent)){//UAがDoCoMoかKDDIで始まっていれば
$attributes = array (
'charset' => 'SJIS-win',
'lineend' => 'unix',
'tab' => ' ',
'language' => $lang->getTag(),
'direction' => $lang->isRTL() ? 'rtl' : 'ltr'
);
}else{
$attributes = array (
'charset' => 'utf-8',
'lineend' => 'unix',
'tab' => ' ',
'language' => $lang->getTag(),
'direction' => $lang->isRTL() ? 'rtl' : 'ltr'
);
}
な感じにしてやれば、DoCoMoとKDDIの場合は、HTTPヘッダでShift_jisを指定してくれるようになります。
これで文字コード変換は完結!
plugins/mobile/terawurfl/terawurfl.php
もUAでKDDIとSoftbankの場合もmarkupをchtmlにしてやれば、iModeのテンプレートを読み込んでくれるようにできるので、色々とおk。
1件のコメント