java.net.URLEncoder.encode (String) é obsoleto, o que devo usar em vez disso?
-
03-07-2019 - |
Pergunta
Eu recebo o seguinte aviso ao usar java.net.URLEncoder.encode
:
warning: [deprecation] encode(java.lang.String) in java.net.URLEncoder has been deprecated
O que eu deveria estar usando em vez disso?
Solução
Use o outro método encode
em URLEncoder :
URLEncoder.encode(String, String)
O primeiro parâmetro é o texto a codificar; o segundo é o nome do caractere que codifica a utilização (por exemplo, UTF-8
). Por exemplo:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
Outras dicas
Você deve usar:
URLEncoder.encode("NAME", "UTF-8");
Use a classe URLEncoder :
URLEncoder.encode(String s, String enc)
Onde:
s -. String para ser traduzido
enc - O nome de um suportado codificação de caracteres .
charsets padrão:
ASCII de sete bits US-ASCII, A.K.A. ISO646-US, A.K.A. o bloco Latim básico do conjunto de caracteres Unicode ISO-8859-1 ISO alfabeto latino No. 1, A.K.A. ISO-LATIN-1
UTF-8 oito bits Formato UCS Transformation
UTF-16BE Dezasseis-bit UCS Transformation Format, a ordem big-endian byte
UTF-16LE Dezasseis-bit UCS Transformation Format, ordem de bytes little-endian
UTF-16 Dezasseis-bit UCS Transformation Format, ordem de bytes identificado por uma marca de ordem de byte opcional
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
O primeiro parâmetro é a string a codificar; o segundo é o nome do caractere que codifica a utilização (por exemplo, UTF-8).
Como uma referência adicional para as outras respostas, em vez de usar "UTF-8" você pode usar:
HTTP.UTF_8
que está incluído desde Java 4 como parte da biblioteca org.apache.http.protocol, que está incluído também desde Android API 1.