- PR -

Request.QueryStringで「#」と「+」は渡せない!?

投稿者投稿内容
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2003-09-19 16:07
いつもお世話になっております。
現行のシステムで、一部Request.QueryStringでサーバーへ引数を渡している所が
あるのですが、この文字列中に「#」と「+」が混在していると、引数が消えてしまいます。

シングルクォーテーションで囲んでみるなどいろいろやってみたのですが結果は
同じでした。
そこで、改修をやむなくすることになりましたがその前にみなさんにご意見いただきたく
思い書き込みしました。

現在、ある選択肢としては、
@ 「#」と「+」は入力不可にする
A キーを全角化して渡して、サーバーで半角化する。
のどちらかです。
他に何か方法などございませんでしょうか。アドバイス頂ければ幸いです。
よろしくお願いいたします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-09-19 16:20
引用:

がつんさんの書き込み (2003-09-19 16:07) より:
現行のシステムで、一部Request.QueryStringでサーバーへ引数を渡している所が
あるのですが、この文字列中に「#」と「+」が混在していると、引数が消えてしまいます。


「#」という文字そのまま、「+」という文字そのまま、を書いている、ということはないですか?
「#」や「+」(その他「%」など)は、URL中では特殊な文字です。
もしそうならば、ぱっと思いついただけですが、%nn (nnは16進数で、「#」や「+」の文字コード。「#」→「%23」、「+」→「%2b」)と書き換えてみるとか。


[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-09-19 16:33 ]
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2003-09-19 17:22
ぢゃん♪さん、ご回答ありがとうございます。
アドバイスをヒントに、サーバーよ呼び出す直前のクライアントスクリプトで
javascriptのescape('送るキー')とすると、「#」の方は渡すことができました。
しかし以前、「+」はエンコードしても「+」のままなのです。
ためしに、replaceで「+」→「%2b」にしてみましたが、DECODEされるとSPACEに
なってしまってうまくいきませんでした。

もう少し考えてみます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-19 18:38
HttpUtility.UrlDecode / UrlEncodeとか?
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2003-09-19 18:43
Jittaさん、ご回答ありがとうございます。
HttpUtility.UrlDecode / UrlEncode
は、コードビハインドですよね?
サーバーに引き渡された時点で既に「+」はSpaceとして取り扱われてしまいます。

いろいろ考えた結果、「+」のみはサーバー送信時全角化して受けた先で半角化して
やることにしました。
どうもありがとうございました。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-19 22:19
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/js56jsmthencodeuricomponent.asp
JScriptエンジンのバージョンに依存しますが、encodeURIComponentが使えるかも知れません。とりあえず私の環境ではちゃんとエンコードされました。

GETパラメータはいろいろ制約が多いので、POSTで送るのが一番簡単ですが。。。
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2003-09-19 23:18
ぴでさん、ありがとうございます。
encodeURIComponent、バッチリでした!!
「+」もしっかり変換されました。
調査不足でした。。。反省します。

どうもありがとうございました。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-19 23:24
JavaScriptはクライアント依存なので、実行クライアント環境でも確認されたほうがよいと思います。
私もどのバージョンからOKだったか失念したので、他のIEバージョンで確認されたら教えてください。

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