conform with RFC 3986