なんか、何の脈略もないですが、しかも今さらな内容ですが。
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 メソッドを使う方がきれいだと思います。
いまさらになりますが・・・
8/9のわんくま東京勉強会#23参加者の皆様、ありがとうございました。
当日まで配布資料を完成させることができずに、関係者の皆様にはご迷惑をおかけしてしまいました><
今後はそういうことがないようにします。
点数は満足度を表しています。基準点が100点で、評価4があれば
プラス、評価2,1があればマイナスされます。
Q1.セッションの内容は期待通りでしたか
96.0
Q2.セッションの内容は理解できましたか
136.0
Q3.このセッションを知り合いなどに伝えたいと思いますか
104.0
- 基本的に押さえておきたい内容がよくまとまっていたと思います。
- あらためて1つの項目をみつめなおして整理する、というのは面白いテーマでした。が、ちょっとへり下りすぎだったかなあと思いました(あとで言うのは良いけれど、セッション中に自分の発表について、つまらないとか書いてしまうのは、聞く人に失礼かも)。
- 復習の意味でとてもためになるセッションでした。
- Collectionもいろいろあるんですね
- C#のこと、全然知らないので、基本的なところが勉強になった。
- C#まだやったことないのですが、おもしろかったです。
- コレクションは面白かったのだけれど、流れがよめなくて、いまいち難しかったですね。
- うーん…あれ?今何やってたの?今のコードはなに?というのが多くて大変でした。
- 基礎の実用的な内容でためになった。
- わかりませんでした。
- やたら役に立ちました
- 人柄がよく出ています。やさしい人でしょう。
- もう少し説明を明確にしてほしかった。
ご感想・ご意見・ご指摘ありがとうございました!
皆様からのご指摘は素直に受け止めて、反省して、改善しますので、また機会があるならばよろしくお願いいたします。