ホーム > 日記 > 便利?

便利?

携帯向けXHTMLを出力する場合に便利なPHPのパッチ
実際このパッチをあてればOKと思う人が多そうで危険。
上記のパッチは、出力時内部エンコードからShift_JIS変換を利用する場合必要であり、そのようなphp.iniの設定が必要です。
スクリプトをEUC-JPで書いている場合のphp.iniの設定はこんな感じになるんじゃないでしょうか。


default_mimetype = application/xhtml+xml
output_handler = mb_output_handler
default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = eucJP-win
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = SJIS-win
mbstring.detect_order = SJIS-win,UTF-8 

mb_output_handlerの説明みるとheader() で Content-Type が 設定されていない場合とあるので、後からContent-Typeを指定したらダメなのかな?
それだとすごく糞なきがしますがどうなんでしょ。

自分の場合はスクリプトファイルのエンコード、DBをShift_JISに統一する場合が圧倒的に多いです。
PHPに独自パッチを当てることの了承を得るよりも、上記のShift_JIS統一のより敷居が高い気がします。
PHPはコンパイルオプションに「–enable-zend-multibyte」をつけてコンパイルする(PHPと日本語)
DBは以下のように。
・MySQL ⇒ DB文字セットを「cp932」に設定(文字化けする場合はPHPとMySQLの個人的まとめ)
・PostgreSQL ⇒ DB文字セットを「UTF-8」か「EUC-JP」にし、接続毎に「pg_set_client_encofing(‘SJIS’);」を実行
・Oracle ⇒ DB文字セットをShift_JIS系に設定
・Sybase ⇒ DB文字セットをShift_JIS系に設定
php.iniの設定はだいぶスマートに。


default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = SJIS-win
mbstring.encoding_translation = Off
mbstring.http_input = pass
mbstring.http_output = pass 

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。