我们如何使用C#中的URL(RFC 1738)标准对字符串进行编码?
以下在线工具使用此标准转换字符串http://www.freeformatter.com/url-encoder.html
我要转换的字符串示例是test(brackets)
,编码字符串应如下所示:
test%28brackets%29
答案 0 :(得分:16)
Uri.EscapeDataString
做你想要的。请参阅MSDN。
答案 1 :(得分:6)
根据RFC 1738:
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
HttpUtility.UrlEncode
和WebUtility.UrlEncode
都不会对这些字符进行编码,因为标准中的括号()
可以使用未编码的字符。
我不知道为什么你链接的URL Encoder / Decoder会对它们进行编码,因为它还会将它们列为可以在网址中使用的字符。
答案 2 :(得分:0)
Uri.EscapeDataString
将使用Uri标准转换字符串,该标准不符合RFC 1738。
RFC 1738是旧的URL标准。
我是通过使用FormUrlEncodedContent
来实现的:
data = new List<KeyValuePair<string, string>>();
data.Add(new KeyValuePair<string, string>("key", "value"));
var payloadBody = await new FormUrlEncodedContent(data).ReadAsStringAsync();
如果您不需要编码的URL body ,则可能需要用键/值f欺骗周围。将该值留空。