Does C# have an equivalent to JavaScript’s encodeURIComponent()?

Uri.EscapeDataString or HttpUtility.UrlEncode is the correct way to escape a string meant to be part of a URL.

Take for example the string "Stack Overflow":

  • HttpUtility.UrlEncode("Stack Overflow") –> "Stack+Overflow"

  • Uri.EscapeUriString("Stack Overflow") –> "Stack%20Overflow"

  • Uri.EscapeDataString("Stack + Overflow") –> Also encodes "+" to "%2b" —->Stack%20%2B%20%20Overflow

Only the last is correct when used as an actual part of the URL (as opposed to the value of one of the query string parameters)

Leave a Comment