*ケイタイでポストすると文字化け [#vc787466] -ページ: BugTrack -投稿者: [[bebebe]] -優先順位: 普通 -状態: 着手 -カテゴリー: 本体バグ -投稿日: 2003-07-03 (木) 01:23:46 -バージョン: 1.4rc3 **メッセージ [#n83ffaa6] 1.4rc3になって、ケイタイ(iモード 505i)よりページの編集をしようとすると、 日本語名のページには更新ができない 英語名のページだと文字化けする ケイタイからのアクセスで文字コード変換がどこかで抜けちゃったのでしょうか。 私の環境と、SF.jpのpukiwiki1.4お試しページで確認しました。 ---- - init.phpの以下の行を修正するとうまくいくようなんですが、そういうもんなんでしょうか… -- [[ぱんだ]] &new{2003-07-03 (木) 12:45:39}; // ポストされた文字のコードを変換 -mb_convert_variables(SOURCE_ENCODING,'',$get,$post); +mb_convert_variables(SOURCE_ENCODING,'auto',$get,$post); -私も、最近、別件で、' ' ではダメで、 'auto' でうまく行くというケースに遭遇し、調べている所でした。' ' の場合は、mb_detect_order() の指定(現在は、ASCII,JIS,EUC,UTF-8,SJIS)が用いられ、'auto' だと ASCII,JIS,UTF-8,EUC,SJIS になります。ということで、緊急避難的措置として、mb_detect_order を UTF-8 優先に戻してもらえますでしょうか。 ~以前、mb_detect_order をいろいろ変えて、コード検出率を調べたところでは、ASCII,JIS,EUC,UTF-8,SJIS でも、ASCII,JIS,UTF-8,EUC,SJIS でも、SJISの検出率に大差は無かったのですが・・・。 ~[[BugTrack/296]] の対策として、mb_detect_order に関係なく、確実にコード検出可能な修正が、ほぼできつつあります。近日、パッチをアップします。 -- [[三浦克介]] &new{2003-07-03 (木) 13:21:13}; -[[PHPのマニュアル>http://jp.php.net/manual/ja/function.mb-convert-variables.php]]には、「from-encoding に配列またはカンマ区切り の文字列が指定された場合、from-codingから エンコーディングの検出を試みます。encoding が省略された場合、detect_order が使用されます。」と書かれていますが、どうやら、from-encodingは省略できないようです。いろいろ実験してみたところ、' ' を指定すると、detect_order が使われるのではなく、検出すべきエンコーディングが無いと判断され、何も変換が起こらないようです。PHP4.3.1で確認。'auto' にすると、mb_detect_order() で標準とは異なるオーダにしていた場合でも、標準の ASCII,JIS,UTF-8,EUC,SJIS になります。detect_order にしたい場合は、 mb_convert_variables(SOURCE_ENCODING, mb_detect_order(), $string) としないとダメみたいです。 -- [[三浦克介]] &new{2003-07-03 (木) 19:31:53}; -パッチです。&ref(bugTrack296a.diff); -- [[三浦克介]] &new{2003-07-03 (木) 19:50:23};~ [[ここでテストをしています。>http://www-ise3.ise.eng.osaka-u.ac.jp/miura/bugTrack296/pukiwiki.php]]お暇な方、いろいろつついてみて下さい。不完全ながら、URI手打ち(http://script/?ほげほげ)とかも対応しています。 --補足しておきます。上記パッチは、このバグ([[BugTrack/412]])の為の修正と言うよりは、[[BugTrack/296]]の修正の為のパッチです。とりあえず、[[ぱんだ]]さんが、mb_convert_variables() の第二引数を 'auto' にして対応して下さっていますが、この修正では、[[BugTrack/296]] が再出してしまいます。根本的に解決するには、[[BugTrack/296]]もきちんと解決しないといけません。[[BugTrack/296]]が、暫定的な解決(mb_detect_order() でEUC優先にした)によって、忘れ去られてしまった感があるので、こちらにパッチを掲載したのですが、やはり、話の流れが分かりにくくなるので、[[BugTrack/296]]の方に再掲載しておきます。 -- [[三浦克介]] &new{2003-07-05 (土) 17:52:14}; -早速の対応ありがとうございます。ひとまず、ぱんださんのご指摘のinit.phpへの修正でしのぎます。上記の三浦克介さんの修正版テストにケイタイからアクセスしてみましたが、読み書きできました。 -- [[bebebe]] &new{2003-07-04 (金) 07:31:37}; -cvsに投入しました。 -- [[ぱんだ]] &new{2003-07-05 (土) 21:22:39}; -- [[cvs:mbstring.php]](v1.4:r1.3) -- [[cvs:init.php]](v1.4:r1.57) -- [[cvs:html.php]](v1.4:r1.89) #comment