java android

Codificación de URLEncoder/decodificación de URLDecoder en java(Android)



(5)

Quiero usar la clase URLEncoder / URLDecoder (java.net.URLEncoder / URLDecoder) en una aplicación y los métodos: codificar (String s, String enc) / decode (String s, String enc), pero no sé qué puede ser el valor del argumento String enc? Quiero codificar / decodificar en el tipo de contenido MIME "x-www-form-urlencoded". Gracias por tu ayuda.


El JavaDoc tiene todos los detalles.


Mi favorito personal:

static String baseNameFromURL(URL url) { String shortName; String path = url.getPath(); String escaped = path.substring(path.lastIndexOf(''/'') + 1); try { shortName = URLDecoder.decode(escaped, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new Error(e.getMessage(), e); } int period = shortName.lastIndexOf(''.''); return period > -1 ? shortName.substring(0, period) : shortName; }

Devuelve una Cadena vacía si la URL no tiene una parte de nombre de archivo, como https://.com/ o https://.com/questions/ . Si hay una barra invertida en la parte del nombre del archivo, se conserva.

Puede quitar las dos últimas líneas si necesita el nombre corto con la extensión.


Primero debe configurar el tipo de contenido como ''x-www-form-urlencoded''. Luego, independientemente del contenido que desee codificar, codifíquelo utilizando "UTF-8".

Por ejemplo:

Para configurar el contenido en ''x-www-form-urlencoded'':

URL url = new URL("http://www.xyz.com/SomeContext/SomeAction"); <br> URLConnection urlConnection = url.openConnection();<br> ....<br> ....<br> urlConnection.setRequestProperty("Content-type","application/x-www-form-urlencoded");


O si está utilizando algo de JSP, puede escribir lo siguiente sobre él.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><br> < META http-equiv="Content-Type" content="text/html; charset=UTF-8"> < FORM action="someaction.jsp" enctype="application/x-www-form-urlencoded" name="InputForm" method="POST">

Y para usar URLEncoder:

String encodedString = URLEncoder.encode("hello","UTF-8");


URLEncoder y URLDecoder son excepcionales Throwable y, por lo tanto, deben estar encerrados al menos por el bloque try / catch. Sin embargo, hay un poco más simple de usar android.net.Uri :

Uri.decode(string); Uri.encode(string);

Esos son métodos estáticos, utilizan utf-8, disponibles desde API-1 y no arrojan excepciones.


El parámetro de codificación es la codificación de caracteres que estás usando. For example "UTF-8" .