3 URLEncoder y URLDecoder¶
URLEncoder y URLDecoder¶
Debemos tener en cuenta que los distintos sistemas operativos tienen distintas reglas a la hora de crear los nombres de los archivos, permitiendo en algunos casos caracteres que no son válidos en otros. Esto puede suponer un problema a la hora de trabajar con las URL, ya que, como hemos visto anteriormente, algunos caracteres no están permitidos.
Java proporciona la clase URLEncoder
con su método estático encode(stringToEncode, encoding)
, y la clase URLDecoder
con su método estático decode(stringToDecode, encoding)
, que realizan para nosotros la codificación y decodificación, respectivamente, retornando la cadena resultante del proceso. Ambos métodos reciben la cadena a procesar y el formato de codificación de caracteres en el que deben ser procesados, normalmente "UTF-8"
.
Ambos métodos lanzan la excepción UnsupportedEncodingException
si no es posible, respectivamente, la codificación o descodificación.
String encoded = URLEncoder.encode(originalUrlString, StandardCharsets.UTF_8.toString());
String decoded = URLDecoder.decode(encodedUrlString, StandardCharsets.UTF_8.toString());
Otra solución consiste en crear un objeto URI
usando su constructor URI(string)
, que realiza internamente el proceso de codificación. Si se trata de una url podemos obtener el objeto URL
a partir del objeto URI
mediante el método toURL()
:
El constructor de la clase URI
puede lanzar la excepción URISyntaxException
si la cadena recibida no tiene el formato de una URI válida. Por su parte el método toURL()
puede lanzar la excepción MalformedURLException
, ya que internamente llama al constructor de la clase URL
.