ロリポップで有名なpaperboyの中級者向け?レンタルサーバー「チカッパ」に、CakePHP+Smartyを設置したところ、リロード3回から4回に一度、文字化けしてしまうという奇妙な問題が発生。
「気分ですか?」といわんばかりのプログラムらしからぬ始末。
internal_encoding、script_encoding を UTF-8に統一し、ソースコードをUTF-8にする事で上記問題を回避できるという事がわかるまでは早かったのですが、IEでどうしてもレイアウトが崩れてしまう。これから6時間程のハマリモード。
思考錯誤の最中、ソースコードをエディタソフトで表示すると、DOCTYPE宣言の前に?が3つ。
IEは、
そして、デバッグ作業。延々とCakePHPのコードを追っかけたところ、何かを出力するような命令はどこにもない。
ただ、requireでファイルを読み込んだタイミングで、「?」が出力されるようだった。
そして読み込んだファイルは普通のPHPスクリプトだ。文字コードもちゃんとUTF-8。
もしかして?と思い、UTF-8N(BOM無)で保存してみると、「?」が一つ減った。
internal_encodingをUTF-8にする際は、UTF-8Nで保存する必要があるんですね。。知りませんでした。
ただ、うちのテストサーバーでは、通常のUTF-8のままで正常な動作をするんで意味がわからんです。
おそらくサーバー環境の問題でしょうが、そこまでは追う気力もなくダウン。
ま、UTF-8Nで保存すれば間違いなさそうです。
皆さんIEでレイアウトが崩れた場合にはご注意を!
- Newer: CakePHP+RSS+SimplePie
- Older: WordPressで文字コードの問題