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.