- PR -

Request.QueryStringで&を含むデータを取得する方法

投稿者投稿内容
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-11-15 17:25
現在Webアプリを開発しているものですが、Request.QueryStringで&を含むデータを取得できずに困っております。
〜.aspx?key=&
をRequest.QueryString("key")で値を見ると&ではなく空になってしまいます。
Request.QueryStringは&でデータを分けているためしょうがないのかと思っておりますが、何か方法をご存知でしたらご教授下さい。お願いします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-11-15 17:33
&

[ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2007-11-15 17:34 ]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-11-15 18:01
引用:

〜.aspx?key=&
をRequest.QueryString("key")で値を見ると&ではなく空になってしまいます。



& はセパレータ文字なので、そうなるのが正しい動作です。

引用:

Request.QueryStringは&でデータを分けているためしょうがないのかと思っておりますが、何か方法をご存知でしたらご教授下さい。お願いします。



& や空白文字などをクエリ文字列中で使用するためには「URL エンコード」という手法を用います。
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 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
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-11-16 00:05
引用:

ぶさいくろうさんの書き込み (2007-11-15 17:33) より:
&



これはネタなのかな?

引用:

& や空白文字などをクエリ文字列中で使用するためには「URL エンコード」という手法を用います。



「application/x-www-form-urlencoded」MIME形式です。

http://www.w3.org/TR/html401/ の17.13.4に詳細が。

Percent-EncodingやURIに関してはRFC3986に。
2.1とか3.4とかを見るといいですね。
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-20 18:16
引用:

IIJIMASさんの書き込み (2007-11-15 18:41) より:
Server.UrlEncodeメソッドとServer.UrlDecodeメソッド
を使えばよいと思います。



実際に試してみたのですが、Server.UrlEncodeでエンコードされているのは確認できましたがServer.UrlDecodeでデコード後が正常に取得できません。
具体的には、Request.QueryString("key")で取得した時点でデコードされているのです。HttpUtility.UrlDecode(Request.QueryString("key"))にすると2回デコードされることにより文字によってはおかしくなってしまいます。
"+"をエンコード⇒"%2b"⇒デコード⇒"+"⇒デコード⇒" "となってしまいました。
Request.QueryStringはデコードを兼ねているのでしょうか?または設定なのでしょうか?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-12-21 06:37
引用:

Request.QueryStringはデコードを兼ねているのでしょうか?または設定なのでしょうか?


自動的にデコードされますので手動でデコードする必要ありません。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-21 14:00
引用:

Accessさんの書き込み (2007-12-21 06:37) より:
自動的にデコードされますので手動でデコードする必要ありません。




初めて知りました。MSDNを見ても記載されていなかったもので。
そうした場合、HttpUtility.UrlDecodeはどの場面において意義を成すのでしょうか?

スキルアップ/キャリアアップ(JOB@IT)