Wow, this encoding is under-specified. Also mention how we handle non-ASCII chars? It converts to UTF-8 and percent-encodes each octet.