Je reçois l'avertissement suivant lors de l'utilisation java.net.URLEncoder.encode
:
avertissement: [obsolescence] encode (java.lang.String) dans java.net.URLEncoder est obsolète
Que dois-je utiliser à la place?
Je reçois l'avertissement suivant lors de l'utilisation java.net.URLEncoder.encode
:
avertissement: [obsolescence] encode (java.lang.String) dans java.net.URLEncoder est obsolète
Que dois-je utiliser à la place?
Réponses:
Utilisez l'autre encode
méthode dans URLEncoder :
URLEncoder.encode(String, String)
Le premier paramètre est le texte à encoder; le second est le nom du codage de caractères à utiliser (par exemple, UTF-8
). Par exemple:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
StandardCharsets.US_ASCII
, StandardCharsets.UTF_8
etc. Malheureusement, URLEncoder.encode
n'accepte pas Charset
... (mais beaucoup d' autres moethods faire).
URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. En utilisant la constante statique UTF_8
de toString()
méthode que le schéma de codage de caractères jette java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
les toString()
retours « java.nio.charset.CharsetICU [UTF-8] ». Pour obtenir le "UTF-8" souhaité, utilisez name()
plutôt sa méthode.
Tu devrais utiliser:
URLEncoder.encode("NAME", "UTF-8");
Utilisez la classe URLEncoder :
URLEncoder.encode(String s, String enc)
Où :
s - Chaîne à traduire.
enc - Le nom d'un encodage de caractères pris en charge .
Jeux de caractères standard:
US-ASCII ASCII sept bits, alias ISO646-US, alias le bloc Latin de base du jeu de caractères Unicode ISO-8859-1 Alphabet latin ISO n ° 1, alias ISO-LATIN-1
Format de transformation UCS 8 bits UTF-8
UTF-16BE Format de transformation UCS 16 bits, ordre des octets big-endian
UTF-16LE Format de transformation UCS 16 bits, ordre des octets petit boutiste
UTF-16 Format de transformation UCS 16 bits, ordre des octets identifié par une marque facultative d'ordre des octets
Exemple:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
Le premier paramètre est la chaîne à encoder; le second est le nom du codage de caractères à utiliser (par exemple, UTF-8).
Comme référence supplémentaire pour les autres réponses, au lieu d'utiliser "UTF-8", vous pouvez utiliser:
HTTP.UTF_8
qui est inclus depuis Java 4 dans le cadre de la bibliothèque org.apache.http.protocol, qui est également incluse depuis l'API Android 1.
org.apache.http.protocol.HTTP
classe de bibliothèque Apache HttpClient 4.x.
L'utilisation de org.apache.commons.httpclient.URI
n'est pas strictement un problème; le problème est que vous ciblez le mauvais constructeur, qui est déprécié.
En utilisant juste
new URI( [string] );
Le signalera en effet comme déprécié. Ce qu'il faut, c'est fournir au moins un argument supplémentaire (le premier, ci-dessous), et idéalement deux:
escaped
: true si la séquence de caractères URI est sous forme d'échappement. faux sinon.charset
: la chaîne de caractères pour effectuer l'encodage d'échappement, si nécessaireCela ciblera un constructeur non amorti au sein de cette classe. Un usage idéal serait donc comme tel:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
Un peu fou-tard dans le jeu (un cheveu plus de 11 ans plus tard - par exemple ! ), Mais j'espère que cela aidera quelqu'un d'autre, surtout si la méthode à l'extrémité attend toujours un URI, tel que org.apache.commons.httpclient.setURI()
.