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?

Foi útil?

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

Exemplo:

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top