public static void Main()
from i in Enumerable.Range(0, char.MaxValue + 1)
where !char.IsHighSurrogate(c)
UrlEncode = EncodedToUpper(WebUtility.UrlEncode(c.ToString())),
EscapeDataString = EncodedToUpper(Uri.EscapeDataString(c.ToString())),
EscapeUriString = EncodedToUpper(Uri.EscapeUriString(c.ToString())),
HttpUrlPathEncode = EncodedToUpper(HttpUtility.UrlPathEncode(c.ToString()))
where new[] { diff.EscapeDataString, diff.EscapeUriString, diff.HttpUrlPathEncode }.Any(s => s != diff.UrlEncode)
Console.WriteLine("Original\tUrlEncode\tEscapeDataString\tEscapeUriString\tHttpUrlPathEncode");
foreach (var diff in diffs)
Console.WriteLine($"{diff.Original}\t{diff.UrlEncode}\t{diff.EscapeDataString}\t{diff.EscapeUriString}\t{diff.HttpUrlPathEncode}");
private static string EncodedToUpper(string s)
return s.Length > 1 ? s.ToUpperInvariant() : s;