2008/10/06

phpでEUC検索時の文字化け

「mbstring.encoding_translation」がonの状態では、送信時に自動で内部エンコーディングに変換されているはずです。そして、「mbstring.http_input」が特に指定されていないため、1文字のような短い値だけでは文字コードが上手く検出できず、変換に失敗します。(検索ボタンをクリックした場合は「検索」という文字も送信されるため文字コードの検出に成功する)

「mbstring.encoding_translation」をfalseにしてしまって入力と出力のエンコードを自分でしてしまうのが確実。

設定を変更できないなら古典的方法ですがhiddenで十分な長さの文字を渡してやれば良い。