Aside from my general distaste of the double-encoding,
it doesn't
handle the case of manual input: someone who types
http://www.wikipedia.com/wiki/AT&T into their URL bar shouldn't
end up at [[AT]].
If you ask me, they should. People who don't care about the
details of HTML/HTTP/etc. will either follow links or type "AT&T"
into the search box, and all is well. If they want to type in
URLs, then they have already committed themselves to knowing
about the quirks of URLs. One of those quirks is that the URL
http://...AT&T is badly formed, and the browser is allowed to
interpret it in more than one way. It might choose to interpret it
as "fetch the page http://...AT" and pass it the query string "T".
URLs are code--URLs are not user interface elements. If people who
choose to use URLs have to contend with their nuances as code,
that's OK.
Now, all that said, I understand that the web rose so fast that
we never had a chance to replace URLs with something usable, so
many users are forced to use them when they never should have been.
So I'm not opposed to making them easier sometimes. Let's make
them as simple as possible /but no simpler/. If we have to muck
with ampersands a bit just as we convert spaces to underscores,
then that's what we'll have to do.