Caracteres especiales en la cadena de consulta de URL

Tengo una situación en la que el usuario puede ingresar los caracteres que desee en una cadena de consulta de URL.

Ejemplo

http: //localhost/default.aspx? ID = XXXX

http: //localhost/default.aspx? ID = & XXXX

http: //localhost/default.aspx? ID = # XXXX

La página web debe aceptar el parámetro ID ya que no importa cuáles sean los caracteres. Sin embargo, ciertos caracteres especiales como ampersand (&) y pound (#) crean problemas. ¿Cómo puedo aceptarlos como están?