[PHP-users 29740] Re: Q.西や表などの一部の漢字がPOSTできないのです。
高橋政利
takahashi @ hoshino-dk.co.jp
2006年 7月 12日 (水) 20:42:35 JST
高橋です。
> たぶん送信される日本語が短すぎて文字コードの判別に失敗しているのでしょう。
なるほど。なんとなく見えてきたような気がします。
mbstring.http_input = auto
になっているのですが、この時の判定(ASCII,JIS,UTF-8,EUC-JP,SJISのいずれか)
がうまく行っていない。つまり短すぎて分からないということなんでしょうか?
試しに
mbstring.http_input = EUC-JP
と明示して
mbstring.encoding_translation = On
に戻してみましたら、問題なく「西」も「表」も「星」も動作します。
まとめてみますと、
mbstring.http_input
HTTPより入力する文字を指定(autoは自動判定)
mbstring.http_output
HTTPに出力する文字を指定
mbstring.encoding_translation
入力された文字のコードをPHPの内部コードに変換するか否か
mbstring.internal_encoding
PHPの内部コードを指定
つまり、不具合の原因は
文字を入力 > 文字が短くて判定不可能 > PHPが入力文字コード誤認識
> 内部コードと入力文字コードが違うので誤変換 > 文字化け
対策方法は、色々ありますけど
mbstring.http_input = EUC-JP
と明示してあげた方がEUC-JPで統一している場合はスッキリしているような気も
します。携帯端末からの入力はどうなるんでしょう・・・・。
PHP-users メーリングリストの案内