Home > CakePHP | PHP > 携帯サイト作成のためにphp.iniを見直してみた

携帯サイト作成のためにphp.iniを見直してみた

先日、CakePHPで携帯サイトを作るやり方を書いたのだが、CakePHP内部では文字コードをSJIS-winに変換してくれるのだが、携帯で見てみると、どうしても文字化けしてしまう、という現象に陥ってしまった。

そこで、いろいろ原因を探ってみた。

最初に考えたのはUTF-8のBOM問題

CakePHPのスクリプトはUTF-8で書いていて、それをmb_convert_encodingして、SJIS-winに変換している。そのUTF-8のファイルにBOMがついてしまっているのでは、と思い、以下のサイトを参考にしてみた。

このサイトのように、BOMがついているファイルを使うと、レスポンスヘッダーより前に不要なコード(EF BB BF)が送信され、文字化けを起こしてしまうというものだ。このサイトのスクリプトを参考にSJIS-winに変換した出力バッファーの最初の3バイトを削ってみたが変わらず。

ということは、BOMが原因ではないということだった。

で、よくよく原因を考えてみた。

いちをその携帯サイトはPCからの閲覧を制限しているわけではなかったので、PCで表示してみると、携帯表示と同様に文字化けする。

が、文字化けしているページの文字コードをSJISに再設定してみると、きちんと表示されるではないか。

ということは、文字コードはきちんとSJIS-winに変換されているにもかかわらず、WebサーバがUTF-8としてレスポンスヘッダーをはき出していることになる。要は、レスポンスヘッダのContent-Typeに問題があったわけだ。

試しに、Firefoxのアドオン、Firebugでレスポンスヘッダーを見てみると、

Content-Type text/html; charset=UTF-8

出ている。

むぅ。。。中身はSJISだが、文字コードをUTF-8として出力していたため、ブラウザが自動的に文字コードをUTF-8としてしまったらしい。

実はCakePHPでサイトを構築する際は、ローカルマシンでXAMPPを使って作成しているのだが、localhost経由ではきちんとSJIS表示されていた。

この違いはなんだ?とおもって、XAMPP経由でのレスポンスヘッダを見てみると、

Content-Type text/html;

となっている。。。。

なんでこっちは文字コードがついてないんだ?と。

最初はWebサーバであるApacheを疑ってみた。

しかし、httpd.confにはdefault_charsetは設定していない。というか、この設定でレスポンスヘッダが変化するかどうかも知らない。。

ということは、あとは考えられるのは、PHPの設定であるphp.iniしかないと。

そこで、上記二つの違いをphp.iniに絞って見てみると、、、UTF-8とレスポンスヘッダに追加されるphp.iniには、

default_mimetype = "text/html"
default_charset = "UTF-8"

と書いてあった。。。ビンゴ。

試しに、以下のように変更したらうまくいった。

default_mimetype = "text/html"
default_charset = none

なるほど。

しかし、この設定はセキュリティー上、あまりよろしくないのかもしれない。

けど、PCサイトをUTF-8で表示し、携帯ページをSJISでやる以上、この設定しかないような気もする。

ちなみに、これに関しては以下のサイトが参考になった。

う~ん、、、かなり時間を食ってしまった・・・

さ、これでさくさく携帯サイトを作成しよっと!

これを機に?、以下の書籍を購入してみた。

携帯サイト コーディング&デザイン

関連記事

Sponsored Link

Google+

facebook

zenback

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.multiburst.net/sometime-php/2009/02/refine-phpini-file/trackback/
Listed below are links to weblogs that reference
携帯サイト作成のためにphp.iniを見直してみた from Sometime PHP

Additional comments powered by BackType

Home > CakePHP | PHP > 携帯サイト作成のためにphp.iniを見直してみた

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Affiliate Blogs
Translator
Japanese flagEnglish flag

Return to page top