2011-06-29 6 views
7

可能性の重複:アンエスケープC#でエスケープURL

http://www.someurl.com/profile.php?mode=register&agreed=true 

私がそれを変換したい:
How can I decode HTML characters in C#?

私は、このフォームでエスケープされたURLを持っていますエスケープなしの形式

http://www.someurl.com/profile.php?mode=register&agreed=true 

これはescapped htmlと同じですか?

どうすればよいですか?

おかげ

+1

URLエンコーディングは、HTMLエンコーディングとは完全に異なります。再開のためにフラグが立てられています。 – Deestan

答えて

9

&は、HTMLのエンティティであり、あなたがHTMLで特別な意味を持っている&を「エスケープ」する必要があるため、テキストをHTMLにエンコードされたときに使用されています。どうやら、このエスケープ・メカニズムはおそらくURLの中で使われていたと思われます。これはリンクのようなHTMLの中で使われているからです。リンクをクリックしたときにブラウザが適切なデコードを行うため、デコードする理由がわかりません。しかし、いずれにせよ、それを元に戻すためにあなたがSystem.Web名前空間でHttpUtility.HtmlDecodeを使用することができます。

var encoded = "http://www.someurl.com/profile.php?mode=register&agreed=true"; 
var decoded = HttpUtility.HtmlDecode(encoded); 

decodedの値は次のとおりです。使用するエンコーディング/デコーディングの

http://www.someurl.com/profile.php?mode=register&agreed=true 

別の形態は、URLエンコードです。これは、URLの一部に特殊文字を含めることができるようにするために使用されます。たとえば、文字「/」、「?」、および「&」は、URL内で特別な意味を持ちます。これらの文字のいずれかをクエリパラメータに含める必要がある場合は、URLを壊さないようにURLエンコードする必要があります。ここでURLのエスケープが使用されているURLの例です:

http://www.someurl.com/profile.php?company=Barnes+%26+Noble 

会社名Barnes & NobleBarnes+%26+Nobleとしてエンコードされました。 &がエスケープされていない場合、&はクエリパラメータ間の区切り文字として使用されるため、URLには1つではなく2つのクエリパラメータが含まれていました。

+0

これはwinformsアプリケーションです。それはネット2.0で動作しますか? 'HttpUtility 'が宣言されていないエラーが発生しました – Smith

+0

@Smith:ここでは、.NET 2.0の' HttpUtility'クラスのドキュメントがあります:http://msdn.microsoft.com/en-us/library/1e55w41w(v=VS) .80).aspx。 'System.Web.dll'への参照を追加するのを忘れましたか? –

関連する問題