.Net FrameworkにはUriエンコードに使うメソッドがいくつかあるが、違いを調べてみた。
- Uri.EscapeDataString(str)
- RFC2396準拠。16進数は大文字になる。
- Uri.EscapeUriString(str)
- EscapeDataStringよりエンコードしない記号が増える。「&+,/:;=?」
16進数は大文字。 - Url全体をまるごと処理することを想定?
- HttpUtility.UrlEncode(str)
- EscapeDataStringと違うのは、空白を%20でなく「+」に変える。
「~」を%7eに変える。「’」を%27に変える。
16進数は小文字。
application/x-www-form-urlencodedに使うことを想定?
Uriクラスのメソッドは、国際化リソース識別子 (IRI) または国際化ドメイン名 (IDN) 解析を有効に設定するとRFC3986準拠になるようだが、システム全体が変わってしまうようなので、個別にやるにはRFC3986で増える予約記号「!’*()」を後から置換するのが現実的かも。
Last 5 posts in .Net Framework
- CanExecuteのTrue,Falseを変更してもコマンド実行の可否がGUIに反映されない場合には - April 12th, 2011
- WebRequestの最大接続数を設定ファイルで変更するには - April 9th, 2011
- WebRequestの最大同時接続数を変更するには - April 5th, 2011