Principales respuestas
Sobre urlencode

Pregunta
-
Hola a todos:
Tengo una cadena str='Empresa pública: jñlkj'
Si hago un server.urlencode me da str='Empresa+p%c3%bablica%3a+j%c3%b1lkj'
Y en la barra de direcciones pone 'Empresa%20p\ufffdblica:%20j\ufffdlkj'
Cuando hago str=request.querystring("str") me da 'Empresa p\ufffdblica: j\ufffdlkj'
¿Por qué pone esos caracteres?
Gracias de antemano
- Editado volar.2016 sábado, 16 de enero de 2016 22:17
Respuestas
-
a) No, el SSL no tiene nada que ver
b) Efectivamente, no admite codificación utf8. La normativa indica que la URL tiene que estar formada íntegramente por caracteres ASCII. EN consecuencia, si tu texto tiene un carácter no-ASCII, como la ñ, lo sustituye por \u1234, siendo 1234 el codepoint de la ñ en Unicode (he puesto 1234 como ejemplo, no sé de memoria cuál es de verdad el código que le corresponde).
Si usas esa codificación pasando el texto por UrlEncode, después al leer la cadena tienes que decodificarla con UrlDecode.
Eso es independiente de la codificación que se hace automáticamente con ciertos caracteres ASCII, por ejemplo, el espacio en blanco se cambia por %20 y la \ se cambia por %c3 si no recuerdo mal. Esta codificación es automática en el navegador y ocurre con independencia de que hagas UrlDecode y UrlEncode.
- Marcado como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Desmarcado como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Propuesto como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Marcado como respuesta volar.2016 jueves, 21 de enero de 2016 19:02
Todas las respuestas
-
>>¿Por qué pone esos caracteres?
porque lo estas encodeando
el string que recuperes deberias aplicarle el Server.UrlDecode()
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Hola:
No se trata de los caracteres %.
Si os fijáis en vez de la ñ pone / y otros caracteres. Lo mismo pasa con la ú.
Es raro. ¿Qué puede pasar? ¿Puede influir el hecho de que todas mis páginas tienen SSL? ¿Qué no admite codificación UT-F8?
Gracias de antemano.
- Editado volar.2016 domingo, 17 de enero de 2016 8:46
-
a) No, el SSL no tiene nada que ver
b) Efectivamente, no admite codificación utf8. La normativa indica que la URL tiene que estar formada íntegramente por caracteres ASCII. EN consecuencia, si tu texto tiene un carácter no-ASCII, como la ñ, lo sustituye por \u1234, siendo 1234 el codepoint de la ñ en Unicode (he puesto 1234 como ejemplo, no sé de memoria cuál es de verdad el código que le corresponde).
Si usas esa codificación pasando el texto por UrlEncode, después al leer la cadena tienes que decodificarla con UrlDecode.
Eso es independiente de la codificación que se hace automáticamente con ciertos caracteres ASCII, por ejemplo, el espacio en blanco se cambia por %20 y la \ se cambia por %c3 si no recuerdo mal. Esta codificación es automática en el navegador y ocurre con independencia de que hagas UrlDecode y UrlEncode.
- Marcado como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Desmarcado como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Propuesto como respuesta Sergio ParraModerator domingo, 17 de enero de 2016 9:27
- Marcado como respuesta volar.2016 jueves, 21 de enero de 2016 19:02
-
Hola de nuevo:
Es muy raro. En otro foro han hecho un ejemplo por mí y les sale bien. Recibe los mismos caracteres que envía.
El urldecode lo hago, y sale igual.
No sé qué puede ser. Me choca. Lo que sí es claro que en mis páginas algo hace que tanto la letra con tilde como la ñ ponga \ufddd a la hora de hacer urlencode. Sólo en ese caso, si es á, é, í, ó, ú o ñ. Es decir que lo pasa a otro juego de caracteres. Si vosotros hacéis el ejemplo os saldrá bien. Si teneis SSL debería salir bien también. Me gustaría que lo probaseis y me digais
Gracias por cualquier ayuda.
- Editado volar.2016 domingo, 17 de enero de 2016 10:45
-
La codificación realizada por el método UrlEncode es correcta.
Lo que es extraño es cómo lo representa en la barra de direcciones del navegador.
Me gustaría ver el código que utilizas para montar la url y pasársela al navegador.
Píldoras .NET
Artículos, tutoriales y ejemplos de código .NETPíldoras JS
Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ... -
hola
Vuelvo a plantear la pregunta, usaste Server.UrlDecode() sobre el texto que recibes en la url ? no funciono
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Hola:
Gracias.
Tanto en el parámetro return y cancel_return de paypal tengo lo mismo
strenlace = "https://www.ejemplo.com/graciasreactivaciones.aspx?" & Request.QueryString.ToString & "&titulo=" & Title & "&subtitulo=" & tdsubtitulo.InnerHtml Response.Write("nocancel=" & Server.UrlEncode(strenlace)) Response.End()
tdsubtitulo.innerhtml='Empresa pública: jñlkj'
A la hora de recibir los datos, veo que si pasó por return (paga) hace todo bien, recibo los mismos caracteres que envié. En cambio si pasó por el cancel_return (no paga) me pone \ufffd en vez de la letra con tilde y la ñ.
Y da igual el navegador que use: safari, firefox, opera, chrome
En paypal tengo la codificación UT-F8.
Pensé que sería un problema el sandbox de paypal, pero no es. Pasa igual en live paypal
Leandro, he hecho el urldecode. Y sale igual.
Un comportamiento curioso.
Gracias de antemano.
- Editado volar.2016 domingo, 17 de enero de 2016 14:24
-
Hola:
Estoy capturando la barra de direcciones para ver qué caracteres pone. Y veo que en los dos casos, cancel_return y return (no paga y paga) pone distintos caracteres
Si pasó por return, &subtitulo=Empresa%20pública%3a%20jñlkj
Si pasó por cancel_return, &subtitulo=Empresa%20p\ufffdblica:%20j\ufffdlkj
¿Qué diferencias veis? Es decir ¿por que son diferentes?
Gracias de antemano
-
Hola a todos:
He hecho pruebas. Cómo salen los datos con urlencode. así es
return p%c3%bablica%3a+j%c3%b1lkj cancel_return p%c3%bablica%3a+j%c3%b1lkj
Es decir hace bien el urlencode, da los mismos caracteres tanto return como cancel_return
Ahora he probado a cómo se reciben, al volver de paypal. Así es
cancel_return p\ufffdblica:%20j\ufffdlkj return pública%3a%20jñlkj
Es decir, parece que los toca paypal. Da igual que sea live que sandbox
Escribiré a paypal avisando de esto.
Quisiera saber si alguien que use paypal le ocurre esto, que pruebe con sanbox meter un carácter con tilde o una ñ en los parámetros return y cancel_return de botón de pago
Gracias
- Editado volar.2016 domingo, 17 de enero de 2016 18:10