2

私はこのシナリオに困惑しています。基本的に、aspxページに渡されるURLがあり、URLからクエリ文字列を取得しようとしますが、URLからクエリ文字列を取得しようとすると、「+」が省略され、それが空白。

My URL =  http://localhost:3872/Test.aspx?mt=jan1TNIixxA1+8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet+q7rq7FoTJf+S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s+0R7vW8I0S9d765RHdYU2xkRuojHYZU=

Request["mt"] =jan1TNIixxA1 8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet q7rq7FoTJf S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s 0R7vW8I0S9d765RHdYU2xkRuojHYZU=

ご覧のとおり、これら 2 つの文字列は異なります。

オブジェクトから文字列への変換だと思いましたが、変換前にオブジェクトの値に「+」が省略されているため、そうではないようです。

この文字置換を回避するためにできること (文字列操作を回避したい)

また、この原因は何が考えられるでしょうか?

4

6 に答える 6

1

送信時に文字列を変更しないことが本当に重要な場合は、httprequest から ir を取得した後に変更できます。多分あなたは使うことができます:

MyUrl = (Request["mt"].Replace(" ","+"));

URL にスペースを渡すことはできないため、スペースがある場合は、そこに「+」が含まれていることを確認できます。

于 2013-06-24T09:42:04.867 に答える
1

これを使って:

mt=encodeURIComponent(mt);//if mt be --> jan1TNIixxA1+8tl/0vLLg2PPGq0vMOLEhFQNuG4AJU12VMZpnWTrgar82K5UlXatQT9E9EAUet+q7rq7FoTJf+S2JnSbIptgJDY1EZwRPJDTROktfu5zy25oydmSHB6a4oZetV5mI3s+0R7vW8I0S9d765RHdYU2xkRuojHYZU=
Response.Redirect("Test.aspx?"+mt);

これにより URL がエンコードされ、この「+」が「%2B」に変換された後、エンコードされた URL を読みたい場合はスペースに変換されません。

ここから

于 2013-06-24T09:27:58.700 に答える
1

パラメータ値を生成するには、 HttpUtility.UrlEncodeを使用する必要があります。現在、クエリ パラメータに最適ではない base64 エンコーディングを使用しているようです。

于 2013-06-24T09:27:51.853 に答える