• ベストアンサー

GET形式で&を渡す

初めまして。kuro917と申します。 cgiで、GET形式で&を渡したいのですが、うまくできません。 たとえば、 <form method="POST" action="test.cgi"> <input type="hidden" name="abc" value="def&ghi&jkl"> <input type="submit" value="送信"> だと、正常に値が渡されますが、 test.cgi?abc=def&ghi&jkl だと、うまく渡されません。 これは、区切り記号が&だからだと思いますが、どうしたらよいでしょうか>< ちなみに、値の&を%26に置き換えては見ましたが、結果は変わりませんでした。 どうしても、GET形式で&を渡したいのですが・・・。 できればcgiプログラムを変えない方法でお願いします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

test.cgi?abc=def%26ghi%26jkl でアクセスした時、普通は abc には "def&ghi&jkl" が入ると思います。 疑うべき所はいろいろあるのですが、まずは状況の説明が不足です。 「うまくできません。」だけでは無く、 abc に何が入るのかを書いてください。 あと、postメソッドの FORM ではOKとの事ですが、method="get" の FORM ではどうなりますか? # 例え使いたく無くとも、テストの結果は重要です。

kuro917
質問者

お礼

ありがとうございます。 無事に&を渡すことができました。 原因はほかの所にあったみたいです。(渡すべき値が漏れていた) 最後に、返信が遅れたことをお詫びいたします。

その他の回答 (2)

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.3

まさかとは思いますが、 <form method="POST" action="test.cgi?abc=def%26ghi%26jkl"> なんて書いたんじゃ無いですよね? <a href="test.cgi?abc=def%26ghi%26jkl">送信</a> だと、画面の体裁以外に問題がありますか?

kuro917
質問者

お礼

ありがとうございます。 無事に&を渡すことができました。 原因はほかの所にあったみたいです。(渡すべき値が漏れていた) 最後に、返信が遅れたことをお詫びいたします。

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.2

フォームを使わずに直接、データをURLに渡すなら%エンコード(URLエンコード)するのは当然ですが、 受信データをどのようにパースしていますか。 最初に、$ENV{'QUERY_STRING'}の値をデコードし、それから項目分解、変数代入という順にやっていませんか。 もしそうであるなら、「%26」が「&」に変換されてから、「&」で項目分解するわけですからうまくいくはずがありません。

kuro917
質問者

お礼

ありがとうございます。 無事に&を渡すことができました。 原因はほかの所にあったみたいです。(渡すべき値が漏れていた) 最後に、返信が遅れたことをお詫びいたします。

関連するQ&A