2014-02-25 50 views

回答

5

RFC 1738

Thus, only alphanumerics, the special characters "$-_.+!*'(),", and 
reserved characters used for their reserved purposes may be used 
unencoded within a URL. 

HttpUtility.UrlEncodeWebUtility.UrlEncode都不會對這些字符進行編碼,因爲該標準說明可以使用未編碼的括號()

我不知道爲什麼你鏈接的URL Encoder/Decoder對它們進行編碼,因爲它也將它們列爲可用於URL的字符。

+0

我打電話給第三方API通過HTTP和傳遞字符串中的參數。該字符串是UTF-8 URL編碼。我的API客戶端是用asp.net C#編寫的,因爲API主機可能是用Java編寫的。當字符串參數中有像括號/括號()這樣的字符時,UTF-8編碼器不會對它們進行編碼,而API主機會在%28和%29中對它們進行編碼,並且得到不正確的響應。任何建議如何解決這個問題? – rumi

+0

該API在文檔http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html – rumi

+0

中具有以下參考您可以看看這個:http:// stackoverflow .com/questions/846487/how-to-get-uri-escapedatastring-to-compliant-with-rfc-3986 – Dirk

12

Uri.EscapeDataString做你想要的。請參閱MSDN

+0

對不起,這行不通。試過這個字符串str =「test(brackets)」; str = Uri.EscapeDataString(str); – rumi

+0

奇怪。當我嘗試「字符串結果= Uri.EscapeDataString(」測試(括號)「);」結果是「test%28brackets%29」。你係統上的EscapeDataString後有什麼值? –

+0

字符串保持不變。它不會更改 – rumi

相關問題