PHP研究

2.SJIS対応

ケータイ対応スクリプトを組もうとすると、必ずSJIS出力をしなければなりません。

たとえば、先のhello.php

↓ソース

<html><body>
<? echo "Hello world!!!";?>
</body></html>

は、EUCで保存したものでした。
これを日本語に

<html><body>
<? echo "こにゃにゃちわ!!!";?>
</body></html>

としても、IEでは自動的に文字コードを判断して表示してくれます。
しかし、Notepadでソースを見ると文字化けしています。
データがEUCで送られているからです。(と〜ぜんやな)

これを、ちゃんとタグで指定するとどうでしょうか?

EUCで保存されているなら
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
とします。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
とすると文字化けします。

文字コード指定が適切でないからです。

SJISで保存し、
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
とすれば、文字化けはなくなります。


ただし、スクリプトファイルの文字コードとしてはSJISは推奨されていないし、処理上文字化けの危険性もあり、できる限りEUCで作るべきです。

そこで、EUC保存されたスクリプトからSJIS出力する方法が用意されています。

//出力の前に次の関数を記述。(PHP4)
mb_http_output('SJIS');
ob_start('mb_output_handler');