Windows Phone 7中的HttpUtility.UrlEncode是什么?

34

常规的.Net框架包含System.Web程序集中的HttpUtility.UrlEncode,在Silverlight中它似乎被移到了System.Windows.Browser。但在Windows Phone 7中(我以为与Silverlight相同),我似乎找不到一个合适的方法来UrlEncode任何东西。之前提到的程序集在Windows Phone 7环境中都不可用。

3个回答

59

Silverlight内置了Uri.EscapeUriStringUri.EscapeDataString方法,可以用于对URI的部分进行URL编码,例如查询字符串和路径组件等。

即使在桌面应用程序中,您也不应该为HttpUtility而直接使用System.Web.dll,尽管许多开发人员仍然这样做。这有三个原因。

  • 程序集非常大,加载它可能会显著延迟应用程序。
  • 为了大约20行代码,就会膨胀进程的工作集。
  • 它使您的应用程序需要完整的框架,因为System.Web不在客户端配置文件中。

除了上述Uri转义方法外,如果需要HtmlEncode,我建议从其他人编写的代码中复制并粘贴到您的应用程序中。


5
+1,在任何.NET客户端应用程序中(不仅限于Silverlight),都是正确的方法。HttpUtility位于System.Web.dll中,该库旨在提供Web服务器端。 - AnthonyWJones
确实,我刚刚编写了一个使用这个功能的 Twitter 视图/搜索应用程序,所以它们是有效的。 - RoguePlanetoid
关于HtmlEncode/HtmlDecode,它不仅存在于完整的.NET框架的System.Web中:.NET 4客户端配置文件具有System.Net.WebUtility,Silverlight具有System.Windows.Browser.HttpUtility,Windows Phone具有System.Net.HttpUtility。 - George Birbilis
在http://weblog.west-wind.com/posts/2009/Feb/05/Html-and-Uri-String-Encoding-without-SystemWeb中建议:“预处理+号空格格式,因为System.Uri无法处理它,加号文字通常编码为%2b,所以这应该是安全的” - public static string UrlDecode(string text) {text = text.Replace("+", " "); return System.Uri.UnescapeDataString(text); } - George Birbilis

25

HttpUtility.UrlEncodeHttpUtility.UrlDecode在Windows Phone 7中,它们只是被移动了位置。

可以在System.Windows.dll程序集的System.Net.HttpUtility中找到它们。


0

现在问题已经解决了。您可以使用:

Windows.Data.Html.HtmlUtilities.ConvertToText("your_html_string");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接