以前、id:iseebi:20101223:p2でWebBrowserTaskがバグっててURLの&以降を完全無視するとかいたのですが、これはどうもエスケープしておく必要があるという仕様のようでした。
Remarks
URLs that contain special characters must be escaped before being assigned to the URL property. Use the Uri.EscapeDataString method to escape the URL string.
http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.webbrowsertask.url%28v=VS.92%29.aspx
というわけなので、自分が以前に書いた以下のコード。
WebBrowserTask task = new WebBrowserTask(); task.URL = "http://www.google.co.jp/search?q=" + Uri.EscapeUriString(searchWordTextBox.Text) + "&ie=utf-8&oe=utf-8"; task.Show();
これはリダイレクタをかまさなくても以下のように書き直せば動作します。
WebBrowserTask task = new WebBrowserTask(); task.URL = Uri.EscapeDataString("http://www.google.co.jp/search?q=" + Uri.EscapeUriString(searchWordTextBox.Text) + "&ie=utf-8&oe=utf-8"); task.Show();
これはJanuary 2011 Updateでの修正と言うことではなく、RTMの時点でこうなっています。また、CTPの時点ではこのエスケープは不要でした。
まさかこういうこととはつゆしらず。というかそもそも、WebBrowserTask.URL が Uri クラスにしておくべきだったんじゃないかとも思うんですけどね…。