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.
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 f.e. let the value empty.
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.