Cuando utilices páginas con paso de variables entre ellas (como parámetros en la URL) es importante que tengas en cuenta que el navegador Netscape no será capaz de interpretar caracteres especiales como espacios, guiones, o la letra Ñ. Esta caracteristica puede evitarse utilizando el método URLencode del objeto server mediante la cual se puede formatear cualquier cadena con caracteres de escape que serán correctamente procesados por los dos navegadores más conocidos del mercado.
Por citar un ejemplo el valor "MªAngeles Muñoz" se convertiría -utilizando URLEncode- en "M%AAAngeles+Mu%F1oz"
<html> <head> <title>Datos personales</title> </head> <body> Enlace a la <a href="test.asp?nombre=MªAngeles Muñoz">página de pruebas</a> </body> </html>
<html> <head> <title>Datos personales</title> </head> <body> El nombre recibido es: <% response.write request.querystring("nombre") %> </body> </html>
Si ejecutas el enlace al que apunta esta página, verás que con Netscape se produce un error de tipo 400 Petición errónea
La sentencia correcta debería haber sido:
Enlace a la <a href="test.asp?nombre=<%=server.URLEncode("MªAngeles Muñoz")%>">página de pruebas</a>
Observa en la siguiente imagen la diferencia en la URL respecto a la imagen anterior (incorrecta)
Codificación de carácteres en formato HTML
El concepto inverso al explicado anteriormente también puede ser necesario aplicarlo en los desarrollos Web. Para ello utilizaremos el método HTMLEncode del objeto Server mediante el cual podremos mostrar una cadena con los caracteres de escape que se utilizan en HTML.
Un ejemplo de la utilidad de HTMLEncode, lo tenemos cuando se desea mostrar un texto recibido por querystring como valor de un objeto de un formulario HTML.
Sigue el siguiente ejemplo para ponerlo en práctica:
<html> <head> <title>Datos personales</title> </head> <body> <form name="form1" action="verDatos.asp" method="get"> Nombre: <input type ="text" name="nombre" value= "<%=Server.HTMLencode(request.querystring("nombre"))%>"> <br> Dirección: <input type ="text" name="direccion" value= "<%=Server.HTMLencode(request.querystring("direccion"))%>"> <br> Aficiones:<input type ="text" name="aficiones" value= "<%=Server.HTMLencode(request.querystring("aficiones"))%>"> <br> <input type=submit> </form> </body> </html>
En el ejemplo anterior, los parametros:
serían convertidos mediante HTMLEncode en