- ベストアンサー
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"となってしまいます。
- みんなの回答 (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"))
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
未経験です。 http://www.studyinghttp.net/uri 多分それはASPの仕様じゃなくてURIの仕様。 検証はしていませんが window.open("./child.aspx?xxx=123+456","test",""); window.open("./child.aspx?xxx=123%25456","test",""); だとどうなりますか?
補足
結果「123%456」でした。 URIの仕様ですか。ちょっと教えていただいたサイトを見てみます。 回答ありがとうございました。
お礼
教えて頂いたとおり、URLのエンコードでできました。 URLの知識不足でした。勉強しておきます。 回答ありがとうございました。