URI Architecture & RFC 3986 Reserved vs Unreserved Characters
Uniform Resource Identifiers (URIs) are governed by RFC 3986. Because URIs must travel across heterogeneous networks and legacy gateways safely, character sets are divided into unreserved characters (A-Z, a-z, 0-9, "-", "_", ".", "~") which are never encoded, and reserved characters (":", "/", "?", "#", "[", "]", "@", "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "=") which serve as structural syntax delimiters. Any reserved character used as literal data within a parameter must be percent-encoded (%HH hex representation).
// URL Component Breakdown (RFC 3986)
// https://user:pass@example.com:8080/path/to/resource?query=param#fragment
// |___| |_______| |_________| |__| |_______________| |_________| |______|
// scheme userinfo host port path query fragment