39

エスケープされた Url 文字列をエスケープされていない形式に変換する関数はありますか? System.Web.HttpUtility.UrlDecode()その仕事はできますが、への参照を追加したくありませんSystem.Web.dll。私のアプリは Web アプリケーションではないため、アセンブリで関数を使用するためだけに依存関係を追加したくありません。

更新:同じ問題に関するRick Strahl のブログ投稿を確認してください。

4

8 に答える 8

72

編集:静的メソッドUri.UnescapeDataString()を使用してURLをデコードします:

エンコード: http%3a%2f%2fwww.google.com%2fsearch%3fhl%3den%26q%3dsomething%20%2323%26btnG%3dGoogle%2bSearch%26aq%3df%26oq%3d

デコード: http://www.google.com/search?hl=en&q=something #23&btnG=Google+Search&aq=f&oq=

于 2008-10-27T12:20:19.817 に答える
7

.NET 4.0 以降を使用している場合は、WebUtility.UrlDecodeを使用できます。これは、クライアント プロファイルで動作し、正符号も正しく処理します (このディスカッションを参照)。

于 2015-11-26T00:14:46.350 に答える
4

System.Web.dll をロードしないことについて - 他の人が指摘しているように、それを持っていない可能性のあるクライアント (「クライアント プロファイル」、「コンパクト フレームワーク」、「マイクロ フレームワーク」) を処理する必要があることがわかっていない限り、興奮する価値はありません。 "、"シルバーライト")。

リスペース; それほど多くはありません。.NET アセンブリはメソッドごとに JIT されるため、いくつかのメソッドを使用するだけでは大きなオーバーヘッドは発生しないことに注意してください。

本当の問題 (IMO) は、クライアントが System.Web.dll を持っているという信頼のレベルです。彼らが完全なフレームワークを使用していることに満足している場合は、それを選択してください.

于 2008-10-27T12:02:12.443 に答える
2

@Smith
私は保存の問題を抱えていました。変更はありません。

多くのことをテストした後、テスト文字列がデコードされたことに気づきました。最終的には、新しい空の文字列を作成し、その値をエンコードされた文字列に設定してから、新しい文字列で実行する必要がWebUtility.HtmlDecodeありUri.UnescapeDataStringました。何らかの理由で、前述の順序でデコードとエスケープ解除を実行する必要がありました。奇妙な。

こんな感じで解決しました。

Dim strEncoded as string="http%3a%2f%2fwww.google.com%2fsearch%3fhl%3den%26q%3dsomething%20%2323%26btnG%3dGoogle%2bSearch%26aq%3df%26oq%3d"

Dim strDecoded as string = ""
strDecoded = strEncoded
strDecoded = WebUtility.HtmlDecode(strDecoded)
strDecoded = Uri.UnescapeDataString(strDecoded)
于 2011-11-23T21:11:22.077 に答える
0

Microsoft ACE チームは、 Anti-XSS ライブラリに、decode の拡張 (およびより優れた) バージョンを用意しています。ただし、通過するだけかどうかはわかりません。

(正直に言うと、System.web.dll への依存を心配している理由がわかりません)

于 2008-10-27T11:08:50.507 に答える
0

あなたはすでに .NET フレームワークである CLR などに大きく依存しています。したがって、実際には既に System.Web.DLL に間接的に依存しています。アプリケーションは、ローカル マシン上に存在しないと実行できません。

そして、あなたはメモリを心配していますか?メモリに問題がありますか? 数 KB の DLL をアプリのメモリに読み込めないほど極端なメモリの問題がある場合、なぜ .NET をコーディングするのでしょうか? それとも、時期尚早に最適化していますか?

だから心配しないでください。

于 2008-10-27T11:46:35.360 に答える
-3

System.Net.WebUtility.HtmlDecode.NET 4.0 Client Profile にも取り組んでいます。

于 2012-05-09T14:59:57.180 に答える