How can we encode a string using the URL (RFC 1738) standard in C#?
The following online tool is converting the strings using this standard http://www.freeformatter.com/url-encoder.html
An example of the string I want to convert is test(brackets)
and the encoded string should look like:
test%28brackets%29
Uri.EscapeDataString
does what you want. See MSDN .
According to RFC 1738 :
Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.
Neither HttpUtility.UrlEncode
nor WebUtility.UrlEncode
will encode those characters since the standard says the parentheses ()
can be used unencoded.
I don't know why the URL Encoder / Decoder you linked encodes them since it also lists them as as a character that can be used in a URL.
Uri.EscapeDataString
will convert the string using the Uri standrards, which is not RFC 1738 conform.
RFC 1738 is an old URL standard.
I accomplished it by using FormUrlEncodedContent
:
data = new List<KeyValuePair<string, string>>();
data.Add(new KeyValuePair<string, string>("key", "value"));
var payloadBody = await new FormUrlEncodedContent(data).ReadAsStringAsync();
If you don`t need a encoded URL body you probably need to trick arround with the key / value fe let the value empty.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.