La codificación de URL a URI cambia un "% 3D" a "% 253D"

Tengo problemas para codificar una URL en un URI:

mUrl = "A string url that needs to be encoded for use in a new HttpGet()";
URL url = new URL(mUrl);
URI uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), 
    url.getQuery(), null);

Esto no hace lo que espero para la siguiente URL:

Pasando en la cuerda:

http://m.bloomingdales.com/img?url=http%3A%2F%2Fimages.bloomingdales.com%2Fis%2Fimage%2FBLM%2Fproducts%2F3%2Foptimized%2F1140443_fpx.tif%3Fwid%3D52%26qlt%3D90% 2C0% 26layer% 3Dcomp% 26op_sharpen% 3D0% 26resMode% 3Dsharp2% 26op_usm% 3D0.7% 2C1.0% 2C0.5% 2C0% 26fmt% 3Djpeg & ttl = 30d

Sale como:

http://m.bloomingdales.com/img?url=http%253A%252F%252Fimages.bloomingdales.com%252Fis%252Fimage%252FBLM%252Fproducts%252F3%252Foptimized%252F1140443_fpx.tif%253Fwid%263%52%2525 252C0% 2526layer% 253Dcomp% 2526op_sharpen% 253D0% 2526resMode% 253Dsharp2% 2526op_usm% 253D0.7% 252C1.0% 252C0.5% 252C0% 2526fmt% 253Djpeg & ttl = 30d

Que está roto Por ejemplo, el%3D se convierte en%253D Parece estar haciendo algo misterioso para los% que ya están en la cadena.

¿Qué está pasando y qué estoy haciendo mal aquí?

Respuestas a la pregunta(4)

Su respuesta a la pregunta