Well, the fact that Standards.URI is a class and not a module is a bit of a problem, I think. If we're talking about a better name and place for http_encode_string, it's a function that just encodes a string and returns a string. That doesn't need a URI object and shouldn't require one. So in hindsight it's a bit unfortunate that Standards.URI wasn't made a pmod with a Standards.URI.URI inside it instead.
Of course, having a method in the URI class to let it encode itself to a properly quoted string is a different matter, but is of course nice too.