30分ほどでさくっと作ったmob_analize()を実装しますた。携帯電話というかユーザーエージェントのみでモバイルかどうか判断する簡易スクリプトですが、たぶんうまく行ってると思います。というのも、それまでua_analize()というget_browser()もどきの関数でbrowscap.iniの情報を間接的に使用していたんですが、このiniを見直してみたところ、auの一部ブラウザと被っているブラウザがあったんですよ。多分このせいでauの方がアクセスしてきたときに、このブラウザであると誤判断されてUTF-8で出力されていたんではないかと。携帯電話ではまだまだShift-JISが優勢ですしね。
とりあえず、mob_analize()で先に携帯電話かどうかを判断し、その後でua_analize()を使ってブラウザ判断するようにしました。mob_analize()で携帯電話と判断されれば、その時点でShift-JISかつtext/htmlな出力にするようにしているので、問題はないはずです。これで問題が出たら相当特殊なブラウザか、ユーザーエージェント情報を隠蔽しているか、あとはPHPのバグくらいしか思いつかん。パソコン上でShift-JISかつtext/htmlな出力をされても気づかない可能性大だけど。
調査に協力いただいたラグナイト氏に深く感謝の意を申し上げます。
※参考情報
Comment