.Net URI编码错误

时间:2014-09-24 06:59:54

标签: c# vb.net url httpwebrequest uri

我需要解析http://website.com/page?id=ABCD | EFG

Dim WebR As HttpWebRequest = DirectCast(WebRequest.Create(URL), HttpWebRequest)

任何普通的浏览器(例如firefox)都会对URL进行编码,如下所示:http://website.com/page?id=ABCD%20|%20EFG

但是,在使用我提供的代码或创建新URI时,URL会被编码为:http://website.com/page?id=ABCD%20%7C%20EFG

哪个不适合我,因为id不存在。

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这里的诀窍是:不要以非法网址开头。如果您自己构建URL,则逃避组件是您的工作。例如:

string id = "ABCD | EFG"; // perhaps via some more complicated code
string url = "http://website.com/page?id=" + Uri.EscapeDataString(id);

这正确输出http://website.com/page?id=ABCD%20%7C%20EFG。这是正确的网址。 |不是网址中的有效字符。

http://tools.ietf.org/html/rfc3986#section-2开始,未保留的字符定义为

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

其中ALPHA定义为A - Za - zDIGIT定义为0 - 9

其他任何东西都需要%编码。