フォームで受け取った文字列を変換する必要は?

[上に] [前に] [次に]
よ! [E-Mail] 1998/03/17(火) 21:36:38
フォームに入力された文字列を、.ASPで受け取ってDBに検索にいきたいのですが、
受け取った文字列はコード変換してあげないといけないんでしょうか。
変換する必要があるとすれば、その方法を教えていただきたいのですが。

飯塚 [E-Mail] [HomePage] 1998/03/20(金) 11:38:24
フォームデータは特殊な形式にエンコードされるので、直さなくては行けません。
以下のスクリプトをご参照ください。
これで$FORM{"パラメタ"} の形式でデコードされます。
# --------------------------------------------
# パラメタをデコードする
# --------------------------------------------
@pairs = split(/&/,$buffer);   # $bufferにパラメタが入っているつもり

foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}



よ! [E-Mail] 1998/03/20(金) 12:06:37
解答有り難うございます。
これって、Perl(?)ですよね。
できれば、ASPファイル内で、VBScriptを用いて行いたいのですが・・・。
説明が少なくて申し訳ありませんでした。
ご教示お願いいたします。

PTAN [E-Mail] [HomePage] 1998/03/20(金) 16:01:29
RequestオブジェクトのFormsコレクションを参照します。
要するに、<INPUT TYPE="TEXT" NAME="hoge">の値は、
Request.Form("hoge")で参照できます。

ASPではPerlでのデコード処理は内部でやってくれます。

よ! [E-Mail] 1998/03/20(金) 16:11:06
[[解決]]
ということは、クライアント側の文字体系を気にせず
そのまま参照して、使用しまっていいとゆうことですよね。
有り難うございました。
また何かありましたら、質問させていただきます。

PTAN [E-Mail] [HomePage] 1998/03/20(金) 16:59:58
念のためですが...
EUCで、フォーム(の入ったHTML文書)を作れば、
Request.Form("hoge")にはEUCで入ります(IE4を除く)。

SJISで作れば、問題はありません。

よ! [E-Mail] 1998/03/20(金) 18:14:35
フォームが存在するHTMLがEUCなら、EUCで、
S−Jisなら、S−jisで、つーまーりー、
HTMLが書かれている文字コードに依存する、とゆう解釈でいいんでしょうか。
#どこかのQ&Aにもあったかもしれない・・・
すいません、ついでにIE4だとどうなるのでしょうか。

PTAN [E-Mail] [HomePage] 1998/03/20(金) 18:45:26
Win95環境でしか知らないのですが...
NNはHTMLが書かれている文字コードと同じ。
IE3も基本的にHTMLが書かれている文字コードと同じだけど、
HIDDEN項目だけ常にSJIS(こりゃ、バグとしか思えんです)。
IE4は必ずSJIS。

マイナーバージョンアップで、変わってるかもしれませんが、
こんな感じです。

[上に] [前に] [次に]