Les cuento mi caso.
Tengo una aplicación ASP.NET 2.0, y una página servicerequest.aspx que
recibe por querystring una cadena con texto con caracteres como á, ñ, ä, nº,
1ª, # ...
Un programa de PowerBuilder llama a la página aspx por http, previamente se
una llamada a la función escape() de javascript y se llama a la url del aspx
con el querystring "escapado".
En el aspx tenemos:
string urlDecodeQueryString =
Server.UrlDecode(Request.QueryString.ToString());
NameValueCollection parametrosQueryString =
HttpUtility.ParsecQueryString(urlDecodeQueryString);
Inicialmente, los caracteres especiales como ó, ñ, etcetera no llegan bien
al aspx, se truncaban. Nos llegaba algo así por ejemplo:
camin%2c+n+%2c+%7c%7c%40%40%23
que haciendo el Server.UrlDecode sería: camin, n , ||@@#
Debería aparece: camión, nº ... (es decir, trunca el ó y el caracter º)
En el web.config pusimos:
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" />
Ahora llegaba algo así por ejemplo:
co%u00f1o%2c+n%u00ba%2c+%7c%7c%40%40%23%2c+%u00f1%u00f1%u00f1%u00f1%u00f1%u00f1%u00f1
que haciendo el Server.UrlDecode es: coño, nº, ||@@#, ñññññññ
Ahora si que aparece bien.
Sin embargo, en otra página aspx de la aplicación con esa configuración del
web.config tenemos problemas.
Tenemos una página con un updatepanel que contiene un datalist que muestra
una serie de filas con observaciones.
Además,un botón Añadir, que abre un modal popup extender; este MPE tiene un
campo observaciones para meter texto y un botón añadir.
Al añadir la observación se actualizar el datalist y muestra la nueva
observación.
Ahora, si metemos una nueva observación por ejemplo: áÁñÑnº1ªäÄàÂ
al recargar el datalist aparecen: áà ñÑnº1ªäÄà Â
Esto pasa por tener en el web.config
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" />
Además, se tiene:
Propiedades del navegador Explorer IE 7.0: Encoding (Codificación)
Western European (ISO)
En la Master page tenemos
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
También probé con:
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" culture="es-ES" uiCulture="es-ES" />
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" culture="en-US" uiCulture="en-US" />
Alguna sugerencia ? Estoy perdido en este tema... es más bien problema del
QueryString + UrlDecode o de la codificación de ASP.NET utilizando AJAX ?
La aplicación ASP.NET 2.0 está instalada en Windows 2003 server.
Nota: para el tema de caracteres y AJAx encontré esta referencia, no sé si
influirá en mi caso.
using non UTF-8 encoding will break special character with updatepanel
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=282229
Muchas gracias, agradecería cualquier aportación.
--
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
http://www.setbb.com/putainformatica/viewtopic.php?p=843
www.trabajobasura.com/solusoft
Campo1 = Request("Campo1")
Campo2 = Request("Campo2")
o
Campo1 = Request.QueryString("Campo1")
Campo2 = Request.QueryString("Campo2")
Solo usa URLEncode para mandar datos vía GET o por la URL para
codificarla... pero no es necesario para leer.
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"Alhambra Eidos Kiquenet" <AlhambraEi...@discussions.microsoft.com>
escribió en el mensaje de
noticias:4C941A0E-50D7-466D...@microsoft.com...
con Request.QueryString al leer el parámetro lo hacía mal, no leía bien los
caracteres especiales (á ñ ...)
Si es como comentas, puede ser tema de configuración de IIS ???
En el web.config tenemos
<globalization fileEncoding="iso-8859-1" requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1" />
Y con el UrlDecode se leen bien los caracteres.
pagina1.aspx:
en el evento Page_Load() coloca esto:
Dim Parametros As String = "?Campo1=" & Server.URLEncode("algún") & _
"&Campo2=" & Server.URLEncode("mañana") & _
"&Campo3=" & Server.URLEncode("comunicación")
Response.Redirect("pagina2.asxp" & Parametros)
pagina2.aspx
en el evento Page_Load() coloca esto:
Response.Write "<br>Campo1=" & Request("Campo1")
Response.Write "<br>Campo2=" & Request("Campo2")
Response.Write "<br>Campo3=" & Request("Campo3")
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
"Alhambra Eidos Kiquenet" <AlhambraEi...@discussions.microsoft.com>
escribió en el mensaje de
noticias:DCBF44C9-E9F1-4CCA...@microsoft.com...
Entonces, teniendo como dije la configuración de iso-8859-1, etc.. si hago un
Server.UrlDecode(....)
me coge bien los caracteres.
Ahora llegaba algo así por ejemplo:
co%u00f1o%2c+n%u00ba%2c+%7c%7c%40%40%23%2c+%u00f1%u00f1%u00f1%u00f1%u00f1%u00f1%u00f1
que haciendo el Server.UrlDecode es: coño, nº, ||@@#, ñññññññ
Esperoq ue ahora quede más claro la arquitectura de mi aplicación. por eso
no hago Server.UrlEncode y llamo a mi página.
Saludos y gracias.
No entiendo a que te refieres con escape() de todas maneras, codifica bien
tus caracteres con Powerbuilder o javascript... hay varios códigos de
ejemplo en internet para hacer un "encode" y colocar bien los datos en la
URL... de verdad no entiendo mucho porque colocas otros caracteres en la
cadena de la url.