RFC 3986 Character Matrix
RFC 3986 divides ASCII into unreserved characters (letters, digits, - . _ ~) which should never be encoded, and reserved delimiters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =).
;,/?:@&=+$-_.!~*'()# intact.encodeURIComponent(): Encodes everything except
-_.!~*'().