2011-01-05 278 views
2

使用HttpUtility.UrlEncode並通過接收頁面看到變量作爲URL傳遞:UrlEncoding - 我應該使用哪種編碼?

全新 - >品牌+新
Airconaire +有限公司 - > Airconaire +公司

你能看到第一個和第二個兩個都有一個+他們在哪裏他們沒有在開始?我假設這是與編碼(特別是RFC3986或RFC2396)有關,但我該如何解決這個問題?

我認爲理想情況下空間應該轉換爲%20,但這是最好的方式嗎?

+0

如果你說UrlPathEncode()不爲你工作,你能不能發佈您的代碼? – 2011-01-06 19:23:16

回答

2

嘗試使用HttpUtility.UrlPathEncode而不是URLEncode。

+0

謝謝 - 但UrlPathEncode通過UrlEncode工作的原因是什麼? – 2011-01-05 15:53:27

+0

UrlPathEncode使用平臺不可知編碼方法,而UrlEncode使用微軟方法(我相信)。 – Lazarus 2011-01-05 15:55:03

+0

所以我應該通過我的應用程序將UrlEncode的每個實例都替換爲UrlPathEncode? – 2011-01-05 15:56:04

1

UrlEncode()方法可用於編碼整個URL,包括查詢字符串值。如果在HTTP流中傳遞空格和標點符號等字符,可能會在接收端誤解。 URL編碼將URL中不允許的字符轉換爲與字符實體等同的字符;網址解碼反轉編碼。例如,當字符<和>嵌入到要在URL中傳輸的文本塊中時,它們被編碼爲%3c和%3e。

您可以使用UrlEncode()方法或UrlPathEncode()方法對URL進行編碼。但是,這些方法返回不同的結果。 UrlEncode()方法將每個空格字符轉換爲加號(+)。 UrlPathEncode()方法將每個空格字符轉換爲字符串「%20」,它以十六進制表示法表示一個空格。在對URL的路徑部分進行編碼時使用UrlPathEncode()方法,以保證解碼的URL一致,而不管哪個平臺或瀏覽器執行解碼。

http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx