¿Request.Querystring url decodifica automáticamente una cadena?

Estoy trabajando con una página donde tengo una URL como:
/ directorio / empresa / fabricante

Usando algunas reglas de reescritura, esto se reescribe.

probando con / directory / company / dunkin% 26donuts /

Algunos fabricantes tienen un signo en su nombre. Así que pensé que podría reemplazar el ampersand con%26. Sin embargo, cuando depuro el código y me desplazo sobreRequest.QueryString me muestra{qq=company&manf=dunkin&donuts&cond=} yRequest.QueryString["manf"] me da 'dunkin'

Si yo uso%24 ($) en lugar de símbolo, flotando sobreRequest.QueryString me da{qs=company&manf=dunkin%24donuts&cond=} yRequest.QueryString["manf"] me da 'dunkin $ donuts'

No entiendo el comportamiento diferente aquí. ¿Por qué parece que el valor codificado en url para un signo se decodifica antes de que realmente solicites una clave específica, pero otro carácter codificado como url, como un signo de dólar, solo se decodifica después de que realmente solicites esa clave específica?

¿Es este un cambio reciente? siempre penseRequest.QueryString[key] devolvió el texto real sin descodificarlo primero. ¿O tiene algo que ver con las reescrituras de url?