如何启动包含引号的URL?

时间:2012-08-17 17:23:09

标签: c# winforms

我需要从我的应用程序中启动一个包含引号的URL,如下所示:

string TheURL = "http://www.google.com/search?hl=en&q=hello world \"" + "test with quotes\"";

所以这将搜索Google:

你好世界“用引号测试”

我使用Process.Start命令在用户的默认Web浏览器中打开它:

System.Diagnostics.Process.Start(TheURL);

但是,如果将Firefox设置为我的默认浏览器,则此命令无法执行任何操作,如果Chrome是我的默认浏览器,则会启动三个单独的选项卡。有谁知道如何将引号传递给Process.Start命令?

3 个答案:

答案 0 :(得分:4)

编辑:应用评论者的建议!

您使用Uri.EscapeUriStringhttp://msdn.microsoft.com/en-us/library/system.uri.escapeuristring.aspx

string search = @"Bill & Ted's Excellent Adventure";
string ActualURL = "http://www.google.com/search?hl=en&q=" + Uri.EscapeDataString(search);
System.Diagnostics.Process.Start(ActualURL);

EDIT2:显然我的代码被破坏了。它不允许包含&符号的搜索。修正了上面的代码;现在适用于带有&符号的常规代码和代码。

答案 1 :(得分:3)

就个人而言,我喜欢使用URI。它在编码/解码方面具有很大的灵活性,而且几乎不费吹灰之力。

        Uri myUri = new Uri("http://google.com/search?hl=en&q=\"hello world\"");
        System.Diagnostics.Process.Start(myUri.AbsoluteUri);

答案 2 :(得分:2)

这不是有效的网址,您无法打开/启动它。

使用System.Web.HttpUtility.UrlEncode在编写组件之前对URL进行编码。

参考:http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx