携帯サイトの文字コードの問題を解決する方法

最近の携帯電話は、UTF-8やEUCに対応していたりするみたいだけど、一昔前の携帯電話では文字化けする事がある。
そのせいで「携帯電話サイトはSJISで出力しなくてはならない」という制限がついてしまう。

でも、PHPでプログラムを書くときにSJISは避けたいので、文字コードの変換が必要になるのだけど。
その文字コードの変換を簡単にする方法。

header("Content-type: text/html; charset=Shift_JIS");
echo "てすともじれつ";
echo "てすと文字列";
include ('test.php');

例えば上記のようなコンテンツの場合。

//出力のバッファリング開始
ob_start();

//ここから
echo "てすともじれつ";
echo "てすと文字列";
include ('test.php');
//ここまではこの時点では出力されない

//出力用のバッファを変数$outに代入
$out = ob_get_contents();
//出力用のバッファを破棄
ob_end_clean();

//出力用変数の文字コードをUTF8→SJISへ変換
$out = mb_convert_encoding($out , "SJIS", "UTF-8");

//ヘッダ出力
header("Content-type: text/html; charset=Shift_JIS");

//追加
echo $out;

とすることで、処理やソースコードはUTF-8のまま、出力のみSJISになる。

但しユーザに入力されたデータをDBなどに登録する場合は、入力データをUTF-8に変換して処理してやる必要がある。

2010年05月11日  タグ:

Leave a Reply