你如何正確編碼一個路徑,其中包含一個哈希(#)它?請注意,散列不是片段(書籤?)指示符,而是部分路徑名稱。如何編碼包含散列的路徑?
例如,如果有這樣的路徑:
http://www.contoso.com/code/c#/somecode.cs
它會導致問題,當你例如嘗試做到這一點:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
這似乎是它解釋哈希作爲片段指示符。
用%23手動替換#會感覺不對。還有其他角色應該替換嗎? Uri和HttpUtility中有一些轉義方法,但似乎沒有辦法。
示例中的字符串enc雖然已轉義,但不再是有效的URI。試試Uri uri = new Uri(enc),你會發現它會拋出無效的URI異常。但找到了正確的解決方案。 – Dodgyrabbit 2012-02-17 02:57:56
有趣。我有點迷惑MSDN文檔,然後,它說_Encodes一個URL字符串。 UrlEncode方法可用於編碼整個URL,包括查詢字符串values._(請參閱http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx) – LiquidPony 2012-02-17 19:29:36