WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:パラメータに勝手に\が

0:[投稿] なお [MAIL] [2003/02/13 18:22 ][環境:IE5 WindowsNT]

ボタンが押された時、他のPerlのファイルにパラメータを渡しています。
渡された側はsplit関数を使ってパラメータを分割しているのですが、
パラメータの区切りに勝手に¥が入っているようなのです。
IISの時は正常にパラメータを取得できたのですが、Apacheにしてからこのような現象が
起きてしまいました。

<パラメータを渡す側の記述>
document.bSEARCH.action = "Cgi_HinsituDL_110.cgi?" + argKOJOCD + "?" + argKOJONAME;

<パラメータを渡されて呼ばれたPerlの記述>
my @myargv = split(/\?/,$ARGV[0]);
$ARGV[0]を表示してみると、
AAA\?BBB
というように、?の前に\がついてしまっています。
なので、splitで?で区切ろうとしても
$myargv[0]の値は AAAA\ というように\がついてしまいます。

どなたかわかる方がいらっしゃいましたら教えて下さい。
よろしくお願い致します。


1:[回答] 匿名万歳 [2003/02/13 18:40 ]

document.bSEARCH.action = "Cgi_HinsituDL_110.cgi?" + argKOJOCD + "%3F" + argKOJONAME;

これにする場合、一旦unescapeしないといけませんが。

もしくは、区切り文字を「?」以外に変えるとか。

チョット考えてみると「?」が二つ続くのは変だと思いませんか?


2:[回答] yuu [2003/02/13 22:38 ]

argKOJOCDの後ろは、区切り子のために使用しているつもりなのであれば、クエスチョンマーク(`?`)ではなくセミコロン(`;`)やアンパサンド(`&`)を使いましょう。


3:[回答] なお [MAIL] [2003/02/14 09:36 ]

回答ありがとうございます。
?ではなく&にしてみましたが同じく1つ目のパラメータの後ろに¥がついてしまいます。
document.bSEARCH.action = "Cgi_HinsituDL_110.cgi?" + argKOJOCD + "&" + argKOJONAME;

表示された結果をプロパティでアドレスを見ると正常に
http://xxx.xxx.xxx/Cgi_HinsituDL_110.cgi?0000&工場名
となっているのですが、
渡されたパラメータを表示すると、
print $ARGB[0];
→ 0000\&工場名
と表示され、パラメータを以下のように分割して表示すると
my @myargv = split(/\&/,$ARGV[0]);
$argKOJOCD = $myargv[0];
$argKOJONAME = $myargv[1];
やはり
$argKOJOCD → 0000\
となってしまいます。
2つ目のパラメータに漢字が渡されているからでしょうか?

渡す側では
print "<META http-equiv=\"content-type\" content=\"text/html; charset=Shift_JIS\">\n";
としてあります。


4:[回答] ふじ [URL] [2003/02/14 15:37 ]

@ARGV で受けると、シェルのメタキャラクタがエスケープされるようですね。
区切り文字を + にして、

my @myargv = @ARGV;

とするか、他の区切り文字を使うなら $ENV{QUERY_STRING} で受けるとか。

my @myargv = split /\&/, $ENV{QUERY_STRING};


5:[回答] なお [MAIL] [2003/02/16 13:13 ]

2番目のyuuさんの回答でセミコロン(`;`)にしてみてはという
ご指摘でしたが、コロン(':')にしてみたらできました。
皆さんどうもありがとうございました。


6:[完了] なお [MAIL] [2003/02/16 13:14 ]

完了しました。ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World