2

URLを指定する/Page.aspx?a=b&title=apples+%26+pearsと、Request.Urlプロパティは/Page.aspx?a=b&title=apples+&+pears

2番目のキーと値のペアのURLエンコードされたアンパサンドは、自動的にデコードされていることに注意してください。他のURLエンコードされた予約文字は、自動的にデコードされません。

この動作は正しいですか?

編集:問題は、Request.Urlプロパティが、予期しないときにエンコードされたアンパサンドを自動的にデコードすることです。

答え: string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host, Sitecore.Context.Request.RawUrl)

4

2 に答える 2

2

予約文字 URLは、構文を定義する際に特別に使用するためにいくつかの文字を使用します。これらの文字がURL内で特別な役割で使用されていない場合は、エンコードする必要があります。

 
 ドル( "$")
 アンパサンド( "&")
 プラス( "+")
 コンマ ("、")
 スラッシュ( "/")
 コロン( ":")
 セミコロン( ";")
 等しい( "=")
 疑問符( "?")
 アットマーク( "@")

安全でないキャラクター

一部の文字は、さまざまな理由でURL内で誤解される可能性があります。これらの文字も常にエンコードする必要があります。

パーセント文字( "%")

'ポンド'文字( "#")

より小さい'記号( "<")'より大きい'記号( ">")スペース

したがって、URLエンコードの動作は正しいです。

于 2010-10-21T11:19:23.020 に答える
2

Urlのプロパティは、Requestと呼ばれる内部メソッドでデコードされ CollapsePercentUFromStringInternalます。

これはリフレクターで確認できます。とにかく、これがデフォルトの動作だと思いました。

アップデート

RawUrl プロパティを使用して、デコードされていない URL を取得できます。

于 2010-10-21T11:28:07.973 に答える