2006年7月12日

[PHP-users 29740] Re:Q.西や表などの一部の漢字がPOSTできないのです。

高橋です。

> たぶん送信される日本語が短すぎて文字コードの判別に失敗しているのでしょう。

なるほど。なんとなく見えてきたような気がします。
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 mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月12日 20:42
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39453
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。