1

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

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

所以这将在谷歌搜索:

你好世界“用引号测试”

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

System.Diagnostics.Process.Start(TheURL);

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

4

3 回答 3

4

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

您使用Uri.EscapeUriString:http: //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:显然我的代码被破坏了。它不允许包含 & 字符的搜索。修复了上面的代码;现在适用于常规代码和带有 & 符号的代码。

于 2012-08-17T17:26:14.720 回答
3

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

        Uri myUri = new Uri("http://google.com/search?hl=en&q=\"hello world\"");
        System.Diagnostics.Process.Start(myUri.AbsoluteUri);
于 2012-08-17T17:37:29.930 回答
2

这根本不是一个有效的 URL,您无法打开/启动它。

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

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

于 2012-08-17T17:25:58.640 回答