0

私はURLを持っています:

http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=%2fE2SKGR

クラス Uri は URL を次のように変換します。

http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=/E2SKGR

コンストラクターを呼び出しました

new Uri("http://localhost:8128/WCF8bcPgServices/EventService/Event/GETPLS/station=E2SKGR&secondstation=%2fE2SKGR", true)

無効

クラス Uri が %2f を文字 '/' に変換するのはなぜですか?

4

3 に答える 3

1

%2f は実際には「/」を意味します。asciitableでは、2f が「/」文字に対応していることがわかります。

パーセントエンコーディングは、 自動的に行われるものです。

于 2013-04-18T13:20:19.737 に答える
1

この 2 つは 100% 同等です。

実際に%2fは、パスで (&アンパサンドの前に) 文字 '/' が使用されている場合にのみ、文字 '/' をエンコードする必要があります。アンパサンドの後に&(クエリ文字列で) 使用してもあいまいさがないため、エスケープされていない形式で使用できます。Uriクラスは賢く、これを認識しているため、元の URL に適用した不要なエスケープを削除します。

URL のすべての文字をエスケープしないことで、明らかにバグのある動作を作成しています。?元の URL のどこかで文字を省略したか、あいまいさを取り除くために URL の予約文字をエンコードする必要があります。

于 2013-04-18T13:24:41.470 に答える
0

これは今では時代遅れのようです:

コンストラクターは廃止されました。new Uri(string) を使用してください。dontEscape パラメーターは推奨されておらず、常に false です。http://go.microsoft.com/fwlink/?linkid=14202

それについてのドキュメントを参照してください。

編集 :

コンストラクターに渡した完全な文字列にアクセスし、自動変換を回避する必要がある場合は、Uri.OriginalStringプロパティを使用して、コンストラクターに渡したものを正確に返すことができます。

于 2013-08-21T21:20:54.627 に答える