Mobile Joomla!で携帯対応してみた【文字コード変換完結編】

一番ネックだったのは、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件のコメント

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です