なんか、何の脈略もないですが、しかも今さらな内容ですが。
Windows ApplicationでHttpWebRequestとか使うものを作ってて思ったことを書きます。
URLエンコード・デコードする方法でまず思い浮かぶというかMSDNライブラリから見つかる方法として、
ASP.NETのHttpContext.Server オブジェクトから
HttpServerUtility クラス
http://msdn.microsoft.com/ja-jp/library/system.web.httpserverutility.aspx
UrlEncode メソッド
http://msdn.microsoft.com/ja-jp/library/zttxte6w.aspx
UrlDecode メソッド
http://msdn.microsoft.com/ja-jp/library/6196h3wt.aspx
つまり、
HttpUtility クラス
http://msdn.microsoft.com/ja-jp/library/system.web.httputility.aspx
HttpUtility.UrlEncode メソッド
http://msdn.microsoft.com/ja-jp/library/system.web.httputility.urlencode.aspx
HttpUtility.UrlDecode メソッド
http://msdn.microsoft.com/ja-jp/library/system.web.httputility.urldecode.aspx
を使う方法なのですが、
HttpUtility クラスのページをみると、
名前空間: System.Web
アセンブリ: System.Web (system.web.dll 内)
と書いてあります。
Windows Applicationでこれらを使うためには参照の追加でsystem.web.dllを追加しなくてはなりません。
Webアプリ以外でこれをわざわざ追加するのは適切ではありません。
でも、実は参照の追加をしなくても別のURLをエンコード・デコードする方法があります!(皆様すでにご存じかもですが。。。)
Uri クラス
http://msdn.microsoft.com/ja-jp/library/system.uri.aspx
のstatic メソッド
Uri.EscapeDataString メソッド
http://msdn.microsoft.com/ja-jp/library/system.uri.escapedatastring.aspx
Uri.EscapeUriString メソッド
http://msdn.microsoft.com/ja-jp/library/system.uri.escapeuristring.aspx
Uri.UnescapeDataString メソッド
http://msdn.microsoft.com/ja-jp/library/system.uri.unescapedatastring.aspx
これらは、
名前空間 : System
アセンブリ : System (System.dll 内)
なので参照の追加は必要ありません!
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
あいうえおかきくけこさしすせそたちつてとなにぬねの
Uri.EscapeDataString メソッドでエンコード
%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A%E3%81%8B%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93%E3%81%95%E3%81%97%E3%81%99%E3%81%9B%E3%81%9D%E3%81%9F%E3%81%A1%E3%81%A4%E3%81%A6%E3%81%A8%E3%81%AA%E3%81%AB%E3%81%AC%E3%81%AD%E3%81%AE
Uri.EscapeUriString メソッドでエンコード
%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~
(日本語などはEscapeDataString メソッドとおなじ結果なので省略)
EscapeDataString メソッドはURL(URI)の構成要素の単なる文字列の段階でのエンコードで、EscapeUriStringはURL(URI)になってからのエンコードで使用します。(/や:がそのまま)
日本語の結果の長さの増え方からわかるとおり数値への変換形式はUTF-8です。
デコードするのはどちらもUri.UnescapeDataString メソッドでOKです。
Uri コンストラクタ (String)
http://msdn.microsoft.com/ja-jp/library/z6c2z492.aspx
と
Uri.AbsoluteUri プロパティ
http://msdn.microsoft.com/ja-jp/library/system.uri.absoluteuri.aspx
などでも、EscapeUriString メソッドと同様なことはできます。
ただ個人的にはstatic メソッドを使う方がきれいだと思います。