Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Caracteres

66 views
Skip to first unread message

Alhambra Eidos Kiquenet

unread,
Feb 14, 2008, 3:38:00 AM2/14/08
to
Hola a todos.

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

Jhonny Vargas P.

unread,
Feb 14, 2008, 6:51:43 AM2/14/08
to
En el ASPX no es necesario hacer un URLDecode... solo debes leer los valores
como vienene.

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...

Alhambra Eidos Kiquenet

unread,
Feb 14, 2008, 7:01:00 AM2/14/08
to

Hola,

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.

Jhonny Vargas P.

unread,
Feb 14, 2008, 7:17:02 AM2/14/08
to
Realiza esta prueba

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...

Alhambra Eidos Kiquenet

unread,
Feb 14, 2008, 7:26:03 AM2/14/08
to
Para ajustarse a la realidad de mi aplicación, hay que decir que existe un
programa externo en PowerBuilder que hace un escape() javascript del
querystring, y luego llamar a la URL de mi aplicación.

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.

Jhonny Vargas P.

unread,
Feb 14, 2008, 9:08:38 AM2/14/08
to

"Alhambra Eidos Kiquenet" <AlhambraEi...@discussions.microsoft.com>
escribió en el mensaje de
noticias:B08107D4-3A5D-4F5C...@microsoft.com...

> Para ajustarse a la realidad de mi aplicación, hay que decir que existe un
> programa externo en PowerBuilder que hace un escape() javascript del
> querystring, y luego llamar a la URL de mi aplicación.
>

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.

0 new messages