- - PR -
Request.QueryStringで「#」と「+」は渡せない!?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-09-19 16:07
いつもお世話になっております。
現行のシステムで、一部Request.QueryStringでサーバーへ引数を渡している所が あるのですが、この文字列中に「#」と「+」が混在していると、引数が消えてしまいます。 シングルクォーテーションで囲んでみるなどいろいろやってみたのですが結果は 同じでした。 そこで、改修をやむなくすることになりましたがその前にみなさんにご意見いただきたく 思い書き込みしました。 現在、ある選択肢としては、 @ 「#」と「+」は入力不可にする A キーを全角化して渡して、サーバーで半角化する。 のどちらかです。 他に何か方法などございませんでしょうか。アドバイス頂ければ幸いです。 よろしくお願いいたします。 | ||||
|
投稿日時: 2003-09-19 16:20
「#」という文字そのまま、「+」という文字そのまま、を書いている、ということはないですか? 「#」や「+」(その他「%」など)は、URL中では特殊な文字です。 もしそうならば、ぱっと思いついただけですが、%nn (nnは16進数で、「#」や「+」の文字コード。「#」→「%23」、「+」→「%2b」)と書き換えてみるとか。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-09-19 16:33 ] | ||||
|
投稿日時: 2003-09-19 17:22
ぢゃん♪さん、ご回答ありがとうございます。
アドバイスをヒントに、サーバーよ呼び出す直前のクライアントスクリプトで javascriptのescape('送るキー')とすると、「#」の方は渡すことができました。 しかし以前、「+」はエンコードしても「+」のままなのです。 ためしに、replaceで「+」→「%2b」にしてみましたが、DECODEされるとSPACEに なってしまってうまくいきませんでした。 もう少し考えてみます。 | ||||
|
投稿日時: 2003-09-19 18:38
HttpUtility.UrlDecode / UrlEncodeとか?
| ||||
|
投稿日時: 2003-09-19 18:43
Jittaさん、ご回答ありがとうございます。
HttpUtility.UrlDecode / UrlEncode は、コードビハインドですよね? サーバーに引き渡された時点で既に「+」はSpaceとして取り扱われてしまいます。 いろいろ考えた結果、「+」のみはサーバー送信時全角化して受けた先で半角化して やることにしました。 どうもありがとうございました。 | ||||
|
投稿日時: 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-09-19 23:18
ぴでさん、ありがとうございます。
encodeURIComponent、バッチリでした!! 「+」もしっかり変換されました。 調査不足でした。。。反省します。 どうもありがとうございました。 | ||||
|
投稿日時: 2003-09-19 23:24
JavaScriptはクライアント依存なので、実行クライアント環境でも確認されたほうがよいと思います。
私もどのバージョンからOKだったか失念したので、他のIEバージョンで確認されたら教えてください。 |