2011-10-22 30 views
3

我想使用HttpUtility.UrlEncode編碼下面的字符串;使用HttpUtility.UrlEncode

1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.dbe01.tv" ORDER BY bouquet 

我得到的結果是;

1%3a7%3a1%3a0%3a0%3a0%3a0%3a0%3a0%3a0%3aFROM+BOUQUET+%22userbouquet.dbe0e.tv%22+ORDER+BY+bouquet 

所以它轉換:以%3A,到+空格和「至22%。根據MSDN上的文檔:不應該轉換此外,我不明白爲什麼一個空間進行轉換爲一個加號,我想到了它應該是一個%20

上正在發生的事情和任何可能的解決方法的任何信息

注:?:應該保留原樣,空間應爲%20 「應該是%22

編輯:我找到了一個解決方案,使用簡單的字符串替換e函數,但如果有人仍然可以解釋爲什麼urlencode以這種方式表現。由於

+0

'HttpUtility.UrlEncode'按預期行事。請參閱http://en.wikipedia.org/wiki/Percent-encoding。 –

回答

3
  • +作爲其預期目的代表的空間,所以,翻譯是法律保留URL字符。
  • :是一個保留字符,但沒有在這裏使用預期的目的方式(AFAIK),所以百分比編碼是適當的。
  • "既不是保留也不是毫無保留的(即字母數字等),所以百分號編碼是唯一的選擇
0

我不知道爲什麼你覺得你需要一個解決方法。確實,過去一些服務器對合法的空間使用+進行了很好的處理。

您可以考慮使用Uri.EscapeDataString作爲替代方案,它仍然編碼爲:%3A(對於十六進制值也使用大寫),但它將空格編碼爲%20。

順便說一句,那些數據看起來幾乎像是某種地方有一些SQL concatenation,請告訴我你並不是那麼做。