The RFC 3986 URI: Generic Syntax specification lists a semicolon as a reserved (sub-delim) character:
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
What is the reserved purpose of the ";" of the semicolon in URIs? For that matter, what is the purpose of the other sub-delims (I’m only aware of purposes for "&", "+", and "=")?
There is an explanation at the end of section 3.3.
In other words, it is reserved so that people who want a delimited list of something in the URL can safely use
;as a delimiter even if the parts contain;, as long as the contents are percent-encoded. In other words, you can do this:and interpret it as three parts:
foo,bar,baz;qux. If semicolon were not a reserved character, the;and%3bwould be equivalent, so the URI would be incorrectly interpreted as four parts:foo,bar,baz,qux.