in dotnet/Awsiotdevicepubhttp/Awsiotdevicepubhttp/utils/HttpHelpers.cs [151:168]
public static string UrlEncode(string data, bool isPath = false)
{
// The Set of accepted and valid Url characters per RFC3986. Characters outside of this set will be encoded.
const string validUrlCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
var encoded = new StringBuilder(data.Length * 2);
string unreservedChars = string.Concat(validUrlCharacters, (isPath ? "/:" : ""));
foreach (char symbol in Encoding.UTF8.GetBytes(data))
{
if (unreservedChars.IndexOf(symbol) != -1)
encoded.Append(symbol);
else
encoded.Append("%").Append(string.Format("{0:X2}", (int)symbol));
}
return encoded.ToString();
}