モンスターカレンダー

« 2006年2月 »
12345678910111213141516171819202122232425262728

2006年2月16日アーカイブ

ケータイ(モバイル)サイトを本格的に開発し始めた。実機でテストするにつれ、いろいろとつまづきが...
まず王道、文字化け。

PC向けのサイトを、PHPスクリプト・Smartyファイル・outputのencoding 全て
EUC-JPで作成していて、これはこれで何も問題はなかった。

<php.ini>
mbstring.encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.internal_encoding = auto

ケータイサイトは同じサーバで、同じく内部エンコーディングはEUCで、入出力のみShift_JISとして開発。
スクリプトの初期に

mb_http_output("SJIS");
ob_start("mb_output_handler");

を指定し、ごく普通の表示ページは問題なし。
しかし、inputなど、formの入力要素が出てきた時に文字化け。
Smarty、HTML_QuickFormを使用していたため、この辺りに問題あるのか?とソースを追ってみたり。
Smartyのoutput_filterで出力コンテンツをSJISにしてみたり、
$_POSTをEUCやらSJISやら、いろいろと変換したり。
しかし、NG。何をどうしても一度Submitした後のエラー表示でQuickFormがセットする inputのvalue値がEUCのまま...(他の表示部はSJIS)

最後の手段、PHPのMLに投げようとメールを書きかけ、phpinfo()をもう一度見てみると

「mbstring.encoding_translation None」

今まで気にしていなかった設定項目が。
「入力される HTTP クエリに関して、 文字エンコーディング検出および内部文字エンコーディングへの変換を行う 透過的な文字エンコーディングフィルタを有効にします。 」

Onにして、Apache 再起動。すると、あっさりと文字化けは解決したのだった。脱力...

これは「他人に客観的に説明しているうちに解決」ということにしておく。

open ssl を組み込み

| コメント(0)

ローカルPCのApacheにopen sslを組み込んだ。
特に問題なく完了した。「PHP5徹底攻略 エキスパート編」の5章を参照した。

open sslはすでにはいっていたため、Apacheの再構築から。

(Apacheソースのディレクトリに移動後)
$make clean
$./configure --enable-so --enable-rewrite --enable-ssl --with-ssl
$make
$su
#make install

この後、サーバ証明書の作成。(本の通りなので略... そのうち必要性が出てきたら書くことにする)