• ベストアンサー

Request.Params("xxx")で「+」が消える

ASP.NET(VB)で開発をしております。 親画面のjavascriptのwindow.openで子画面を開く際に、 パラメータ「?xxx=123+456」を渡しています。 子画面側のサーバ処理のRequest.Params("xxx")で パラメタを取得すると「+」が消えてしまい、 「123 456」となってしまっています。 子画面のURLにはちゃんと「?xxx=123+456」と表示されているので、 Request.Params("xxx")で取得する際に、 「+」がスペースに変換されてしまっているのだと思うのですが、 ネットで調べても同様の事象は見つけられませんでした。 これはASPのRequestクラスの仕様なのでしょうか? また対応策などご存知お方、ご教授いただけますでしょうか。 よろしくお願いします。 以下コードです。 【親画面】 window.open("./child.aspx?xxx=123+456","test",""); 【子画面 (child.aspx)】 Dim xxx As String = Request.Params("xxx") '↑xxx = "123 456"となってしまいます。

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

  • ベストアンサー
  • tkrn
  • ベストアンサー率53% (33/62)
回答No.2

> パラメタを取得すると「+」が消えてしまい、 > 「123 456」となってしまっています。 URLエンコードされていないからです。 渡すときに.NET側で"123+456"にHttpUtility.UrlEncode メソッドを噛ませて渡し、 取得するときににHttpUtility.UrlDecodeメソッドを噛ませて取得してください。 こんな感じです。 'URLを渡すとき Dim sQueryString As String = "?xxx=" & HttpUtility.UrlEncode("123+456") 'URLから取得するとき Dim sXXX As String = HttpUtility.UrlDecode(Me.Request.QueryString("xxx"))

stay_gold
質問者

お礼

教えて頂いたとおり、URLのエンコードでできました。 URLの知識不足でした。勉強しておきます。 回答ありがとうございました。

その他の回答 (1)

回答No.1

未経験です。 http://www.studyinghttp.net/uri 多分それはASPの仕様じゃなくてURIの仕様。 検証はしていませんが window.open("./child.aspx?xxx=123+456","test",""); window.open("./child.aspx?xxx=123%25456","test",""); だとどうなりますか?

stay_gold
質問者

補足

結果「123%456」でした。 URIの仕様ですか。ちょっと教えていただいたサイトを見てみます。 回答ありがとうございました。

関連するQ&A