2012-08-17 39 views
1

我需要啓動從我的應用程序的URL包括引號,如下所示:如何啓動包含引號的網址?

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

因此,這將谷歌搜索:

Hello World「的測試帶引號的」

我米乘使用的Process.Start命令打開該用戶的默認Web瀏覽器:

System.Diagnostics.Process.Start(TheURL); 

但是,此命令不能做如果Firefox被設置爲我的默認瀏覽器,任何事情都會發生,如果Chrome是我的默認瀏覽器,它會啓動三個單獨的選項卡有誰知道如何將引號傳遞給Process.Start命令?

+0

參見[這個問題](http://stackoverflow.com/questions/4820167/url-encoding-quotes-and-spaces) – spots 2012-08-17 17:26:09

回答

2

我個人喜歡用URI。它允許編碼/解碼具有很大的靈活性,而且幾乎不費吹灰之力。

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

你是對的。這工作沒有太多的努力,並且它似乎比使用HttpServerUtility.UrlEncode更容易。先生非常感謝您。 – andrewl85 2012-08-17 18:03:31

+0

就像我可以告訴的那樣,如果字符串包含&符號,則Uri方法會失敗 - 是嗎?我試過這個:'Uri myUri = new Uri(「http://google.com/search?movie=bill&ted的優秀冒險」);' - 而是我搜索了'bill'的谷歌搜索。 – 2012-08-21 21:48:12

3

編輯:從評論者建議應用!

您使用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

'Uri.EscapeUriString'做同樣的工作和.net客戶端配置下工作,所以更便攜。 http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx – spender 2012-08-17 17:42:50

+0

很高興知道!傻我,自1997年以來我一直在寫這個相同的代碼,我立即認爲HttpUtility.UrlEncode從原來的ASP天;) – 2012-08-17 17:47:04