java - new - ¿Cómo saber si la cadena ya ha sido codificada en URL?
urlencode java example utf 8 (5)
Decodificar, comparar con el original. Si difiere, el original está codificado. Si no difiere, el original no está codificado. Pero todavía no dice nada sobre si la versión recién descodificada todavía no está codificada. Una buena tarea para la recursión.
Espero que no se pueda escribir una quine en urlencode, o este algoritmo se atascaría.
¿Cómo puedo verificar si la cadena ya ha sido codificada?
Por ejemplo, si codifico TEST==
, obtengo TEST%3D%3D
. Si codifico nuevamente la última cadena, obtendré TEST%253D%253D
, tendría que saber antes de hacerlo si ya está codificado
He codificado los parámetros guardados y necesito buscarlos. No sé qué parámetros de entrada se codificarán o no, por lo que debo saber si debo codificarlos o descodificarlos antes de buscar.
Intenta descifrar la url. Si la cadena resultante es más corta que la original, entonces la URL original ya estaba codificada, de lo contrario, puede codificarla de manera segura (ya sea que no esté codificada o incluso la codificación posterior de la url se quede como está, por lo que la codificación nuevamente no dará como resultado una url incorrecta. ). A continuación se muestra el código pseudo (inspirado en ruby):
# Returns encoded URL for any given URL after determining whether it is already encoded or not
def escape(url)
unescaped_url = URI.unescape(url)
if (unescaped_url.length < url.length)
return url
else
return URI.escape(url)
end
end
Joel en software tuvo una solución para esto en algún momento atrás - http://www.joelonsoftware.com/articles/Wrong.html
O puedes agregar un prefijo a las cadenas.
No puede estar seguro, a menos que sus cuerdas se ajusten a un determinado patrón, o que realice un seguimiento de sus cuerdas. Como notó usted mismo, una cadena que está codificada también puede codificarse, por lo que no puede estar 100% seguro mirando la cadena en sí.
Use regexp para verificar si su cadena contiene caracteres ilegales (es decir, caracteres que no se pueden encontrar en una cadena con codificación URL, como espacios en blanco).