Windows 8 RTM ではURL エンコード/デコード APIが追加されている。

公開:2012-08-19 06:34
更新:2020-02-15 04:37
カテゴリ:windows 8,c++/cx,windows store apps

「Windows 8 RTM を開発者向けに提供開始 - Windows 8 アプリ開発者ブログ - Site Home - MSDN Blogs」にRelease Previewからの移行ガイドへのリンクがあったので読んでいたら、新しいAPIとしてWindows::Foundation::Uri::EscapeComponent/UnescapeComponent APIが追加されていた。


//使用例
String^ uriEncoded = Windows::Foundation::Uri::EscapeComponent("this is a question?");
// returns "this+is+a+question%3F"

ちなみにドキュメントのC++サンプルはどう見てもC#のサンプルのように思える。しかもAPI名が間違っているようだ。

ドキュメントによるとこのAPIはUrlUnescape/UrlEscape APIをラップしたもの。Metro Style AppsをC++/CXで作るとこのUrlUnescape/UrlEscape APIが使えないので(デスクトップ限定)、機能を限定して新APIとして公開したようだ。このAPIはWeb系のアプリでは多用すると思う。まあたとえていえば釘や糊みたいなもんだ。Release Previewではこれがないので自前でなんとかしろ的な感じだったんだよね。

URLエンコード・デコードに関する顛末はC++/CXでMetro Style Appを作るという前提だとWinRTだけだとAPIの機能が足りないし、かといってCOMやWin32で補完されるのかというとそうでもないものもある(デスクトップアプリに比べて使用できないAPIが多い)という例の一つだと思う。

こういうところを見ているとRTMになったけどなんか中途半端で未完成の香りがするね。Vista的なものを感じなくもない。