2008-10-17 25 views
155

me sale el siguiente mensaje de advertencia cuando se utiliza java.net.URLEncoder.encode:java.net.URLEncoder.encode (String) está en desuso, ¿qué debo usar en su lugar?

warning: [deprecation] encode(java.lang.String) 
     in java.net.URLEncoder has been deprecated

Qué debo utilizar en su lugar?

+23

Esto se responde en la etiqueta deprecation en los documentos: "En cambio, utilizar la codificación método (String, String) para especificar la codificación." Ver http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html. –

Respuesta

228

utilizar los otros encode método en URLEncoder:

URLEncoder.encode(String, String) 

El primer parámetro es el texto a codificar; el segundo es el nombre de la codificación de caracteres a usar (por ejemplo, UTF-8). Por ejemplo:

System.out.println(
    URLEncoder.encode(
    "urlParameterString", 
    java.nio.charset.StandardCharsets.UTF_8.toString() 
) 
); 
+12

@jsh: Estoy confundido, ¿por qué no debería haber un URLDecoder? ¿Por qué esto hace que Java se hinche? Estos son métodos estáticos. Tomaría la misma cantidad de esfuerzo para escribir cualquiera. Si te gusta Python, ¿por qué estás programando en Java? ¿Es porque más personas usan Java que Python y tienes un trabajo Java en lugar de Python? – stepanian

+2

@stepanian Sí, tienes que trabajar donde está el trabajo. el paquete python que normalmente uso pone todas estas herramientas de codificación y descodificación bajo un mismo techo. Principalmente agregué este comentario porque tenía que buscar el URLDecoder y pensé que podría ahorrarle a alguien un par de minutos para saber que esto era lo que se requería. – jsh

+0

@jsh: A mucha gente le gusta Python. Nunca lo he usado, pero estoy seguro de que también me gustaría si tuviera tiempo de probarlo. Pero también estoy persiguiendo el dólar. Java no es tan malo. – stepanian

20

usted debe utilizar:

URLEncoder.encode("NAME", "UTF-8"); 
1

El primer parámetro es la cadena para codificar; el segundo es el nombre de la codificación de caracteres a usar (por ejemplo, UTF-8).

1

como referencia adicional para las otras respuestas, en lugar de utilizar "UTF-8" puede utilizar:

HTTP.UTF_8

que se incluye desde Java 4 como parte de la org.apache. http.protocol biblioteca, que se incluye también desde el API de Android 1.

+0

** Incorrecto **, esta clase se encuentra en la clase Apache HttpClient 4.x 'org.apache.http.protocol.HTTP'. –

+0

@BuhakeSindi cierto, leo API 1 pero era de Android, no de Java, de cualquier manera existe antes de Java 7, incluso está en desuso ya jaja. – htafoya

+0

no, esta clase ** nunca ** existió en ninguna versión de Java JDK. Android sigue la biblioteca Apache HttpClient (no me sorprendería si también tomaran el código fuente de allí). –

18

Utilice la clase URLEncoder:

URLEncoder.encode(String s, String enc) 

Dónde:

s - cadena a traducir.

enc - El nombre de un character encoding admitido.

juegos de caracteres estándar:

US-ASCII de siete bits ASCII, también conocido como iso646-estadounidense, también conocido como el bloque Latín básico del juego de caracteres Unicode ISO-8859-1 ISO Latina Alfabeto No. 1, akaISO-LATIN-1

UTF-8 ocho bits formato de transformación UCS

UTF-16BE dieciséis bits formato de transformación UCS, orden big-endian byte

UTF-16LE dieciséis bits formato de transformación UCS, orden de bytes ascendente hacia la izquierda

UTF-16 dieciséis bits formato de transformación UCS, orden de bytes identificado por una junta pcional de orden de bytes marca

Ejemplo:

import java.net.URLEncoder; 

String stringEncoded = URLEncoder.encode(
    "This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8"); 
Cuestiones relacionadas