- - PR -
Request.QueryStringで&を含むデータを取得する方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-15 17:25
現在Webアプリを開発しているものですが、Request.QueryStringで&を含むデータを取得できずに困っております。
〜.aspx?key=& をRequest.QueryString("key")で値を見ると&ではなく空になってしまいます。 Request.QueryStringは&でデータを分けているためしょうがないのかと思っておりますが、何か方法をご存知でしたらご教授下さい。お願いします。 | ||||||||
|
投稿日時: 2007-11-15 17:33
&[ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2007-11-15 17:34 ] | ||||||||
|
投稿日時: 2007-11-15 18:01
& はセパレータ文字なので、そうなるのが正しい動作です。
& や空白文字などをクエリ文字列中で使用するためには「URL エンコード」という手法を用います。 | ||||||||
|
投稿日時: 2007-11-15 18:41
Server.UrlEncodeメソッドとServer.UrlDecodeメソッド
を使えばよいと思います。 参考リンク: MSDNライブラリ HttpServerUtility クラス http://msdn2.microsoft.com/ja-jp/library/system.web.httpserverutility(VS.80).aspx MSDNライブラリ HttpUtility クラス http://msdn2.microsoft.com/ja-jp/library/system.web.httputility(VS.80).aspx の使用例 別のサイトですが類似の質問・回答スレッドも発見しました。 教えて!goo Request.Params("xxx")で「+」が消える http://oshiete1.goo.ne.jp/qa3075579.html | ||||||||
|
投稿日時: 2007-11-16 00:05
これはネタなのかな?
「application/x-www-form-urlencoded」MIME形式です。 http://www.w3.org/TR/html401/ の17.13.4に詳細が。 Percent-EncodingやURIに関してはRFC3986に。 2.1とか3.4とかを見るといいですね。 | ||||||||
|
投稿日時: 2007-12-20 18:16
実際に試してみたのですが、Server.UrlEncodeでエンコードされているのは確認できましたがServer.UrlDecodeでデコード後が正常に取得できません。 具体的には、Request.QueryString("key")で取得した時点でデコードされているのです。HttpUtility.UrlDecode(Request.QueryString("key"))にすると2回デコードされることにより文字によってはおかしくなってしまいます。 "+"をエンコード⇒"%2b"⇒デコード⇒"+"⇒デコード⇒" "となってしまいました。 Request.QueryStringはデコードを兼ねているのでしょうか?または設定なのでしょうか? | ||||||||
|
投稿日時: 2007-12-21 06:37
自動的にデコードされますので手動でデコードする必要ありません。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||||||
|
投稿日時: 2007-12-21 14:00
初めて知りました。MSDNを見ても記載されていなかったもので。 そうした場合、HttpUtility.UrlDecodeはどの場面において意義を成すのでしょうか? |