[PHP-users 24113] Re: UTF-8のデータをhiddun属性でPOSTすると、データがEUC-JPになる

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2005年 1月 13日 (木) 10:54:00 JST


仲村@どしろーとです。

On Thu, 13 Jan 2005 01:53:12 +0900,
 Masanori Kobayashi <markun @ leo.bekkoame.ne.jp> wrote:

> その理由は、自動変換をoffした場合、結局スクリプト内で受け取ったデータの
> コード判定のためにPHPのmb関連の関数を使用してコード判定し、変換するとい
> う作業をすることとなり、入り口で自動で行っていることを手動で行うだけにな
> るからです。結局同じリスクを負っていることに変わりはありません。

 html に
<form action="foo.php" method="post">
   入力して! <input type="text" name="foo"><br>
   <input type="hidden" name="ditectcode" value="分かっている文字列"><br>
   <input type="submit" name="submit" value="Submit">
</form>

 とか書いておき、PHP で

$Encodes = array ("ASCII","JIS","UTF-8","eucJP-win","SJIS-win");
# $Encodes = mb_list_encodings (); でも良いかも知れません。

while ($Code = array_pop($Encodes))
  if ("分かっている文字列!" ==
    mb_convert_encoding($_POST['ditectcode'], mb_internal_encoding(), $Code)){
    mb_detect_order($Code);
    break;
  }
}
if (!$Code){ 文字コード判別に失敗時の処理 }

みたいに最初に書いておけば、あとは
 mb_convert_encoding($_POST['foo'], mb_internal_encoding())
とかで何とかなると思うのですが、駄目ですか?
項目毎に文字コードが変わったりすることがあるなら駄目ですけど...
# 掲示板で本文は化けないのに、タイトルだけ文字化けしたりする事が
# あるんから、駄目なのかなぁ。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>
#  頭の中では考えるのですが、プログラマーじゃないので
# 実際使った(書いた)事はありません(^^;


PHP-users メーリングリストの案内