using System.Collections.Specialized;
public static void Main()
var toQuery = HttpUtility.ParseQueryString("");
toQuery.Add("hello","world");
toQuery.Add("cafe","café");
toQuery.Add("armoured","blindée");
toQuery.Add("foot","fuß");
toQuery.Add("BnH","B&H");
toQuery.Add("All","100%");
toQuery.Add("Swear","!\"£$%^&*()_+-=[]{};'#:@~,./<>?\\|");
toQuery.Add("VeryÐôďğÝ","VeryDodgy");
var def = defaulttostring(toQuery);
var matt = matttostring(toQuery);
var rich = richardtostring(toQuery);
private static string defaulttostring(NameValueCollection toQuery)
return toQuery.ToString();
private static string matttostring(NameValueCollection toQuery)
var sb = new StringBuilder();
foreach (string key in toQuery.AllKeys) {
sb.Append(HttpUtility.UrlEncode(key));
sb.Append(HttpUtility.UrlEncode(toQuery[key]));
return sb.ToString(0,sb.Length - "&".Length);
private static string richardtostring(NameValueCollection toQuery)
foreach (string key in toQuery.AllKeys) {
toQuery[key] = HttpUtility.UrlEncode(toQuery[key]);
return Uri.UnescapeDataString(toQuery.ToString());