URL 的编码参数
Posted
技术标签:
【中文标题】URL 的编码参数【英文标题】:Encoding parameters for a URL 【发布时间】:2011-07-02 23:51:38 【问题描述】:我有一个正在构建 URL 的 Silverlight 应用程序。此 URL 是对基于 REST 的服务的调用。此服务需要一个表示位置的参数。位置采用“城市,州”的形式。为了构建这个 URL,我调用了以下代码:
string url = "http://www.example.com/myService.svc/";
url += HttpUtility.UrlEncode(locationTextBox.Text);
如果用户在 locationTextBox 中输入“chicago, il”,结果如下所示:
http://www.example.com/myService.svc/chicago%2c+il
但实际上,我有点期待 URL 的样子;
http://www.example.com/myService.svc/chicago,%20il
当通过浏览器 URL 测试我的服务时,我期望的那个有效。但是,正在生成的 URL 不起作用。我做错了什么?
【问题讨论】:
【参考方案1】:我会推荐Uri.EscapeDataString 而不是使用HttpUtility 函数。请参阅Server.UrlEncode vs. HttpUtility.UrlEncode 中的讨论。
【讨论】:
我试过这个,但仍然收到“#”字符的错误。请在这里查看我的问题:***.com/questions/31699335/…【参考方案2】:尝试使用 UrlPathEncode() 方法。 在以下位置查看备注: http://msdn.microsoft.com/en-us/library/h10z5byc.aspx
引用:
您可以使用 with 对 URL 进行编码 UrlEncode() 方法或 UrlPathEncode() 方法。然而 方法返回不同的结果。这 UrlEncode() 方法转换每个空格 字符转换为加号 (+)。这 UrlPathEncode() 方法将每个 空格字符插入字符串“%20”, 它代表一个空间 十六进制表示法。使用 编码时的 UrlPathEncode() 方法 URL 的路径部分,以便 保证一致的解码 URL, 无论是哪个平台或 浏览器执行解码。
【讨论】:
【参考方案3】:最安全的选择是使用 AntiXss 库。它有更多标准(和安全)版本,用于将内容编码为各种用途(如 Url 编码、html 和 HtmlAttribute 编码等)。 可以从 MS 站点 (http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09) 下载旧的 3.1 版本,它可以与旧的 .NET 版本一起使用,新版本在http://wpl.codeplex.com/
【讨论】:
以上是关于URL 的编码参数的主要内容,如果未能解决你的问题,请参考以下文章