Recebo o seguinte aviso ao usar java.net.URLEncoder.encode
:
aviso: codificação [obsoleta] (java.lang.String) no java.net.URLEncoder foi descontinuado
O que devo usar em vez disso?
java
url
network-programming
deprecated
Frank Krueger
fonte
fonte
Respostas:
Use o outro
encode
método no URLEncoder :O primeiro parâmetro é o texto a codificar; o segundo é o nome da codificação de caracteres a ser usada (por exemplo,
UTF-8
). Por exemplo:fonte
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
etc. Infelizmente,URLEncoder.encode
não aceita umCharset
... (mas muitas outras moethods fazer).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. Usando a constante estáticaUTF_8
dotoString()
método como o esquema de codificação de caracteres lançajava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
como ostoString()
retornos 'java.nio.charset.CharsetICU [UTF-8]'. Para obter o "UTF-8" desejado, use seuname()
método.Você deveria usar:
fonte
Use a classe URLEncoder :
Onde :
Conjuntos de caracteres padrão:
Exemplo:
fonte
O primeiro parâmetro é a String a codificar; o segundo é o nome da codificação de caracteres a ser usada (por exemplo, UTF-8).
fonte
Como referência adicional para as outras respostas, em vez de usar "UTF-8", você pode usar:
HTTP.UTF_8
que está incluído desde o Java 4 como parte da biblioteca org.apache.http.protocol, que também está incluído desde a API 1 do Android.
fonte
org.apache.http.protocol.HTTP
classe de biblioteca Apache HttpClient 4.x.O uso de
org.apache.commons.httpclient.URI
não é estritamente um problema; o que é um problema é que você direcione o construtor errado, que é depreciado.Usando apenas
De fato, o sinalizará como depreciado. O que é necessário é fornecer no mínimo um argumento adicional (o primeiro, abaixo) e, idealmente, dois:
escaped
: true se a sequência de caracteres URI estiver na forma de escape. false caso contrário.charset
: a sequência de caracteres charset para fazer a codificação de escape, se necessárioIsso terá como alvo um construtor não depreciado nessa classe. Portanto, um uso ideal seria o seguinte:
Um pouco louco no final do jogo (um cabelo mais de 11 anos depois - egad! ), Mas espero que isso ajude outra pessoa, especialmente se o método mais distante for ainda esperando um URI, como
org.apache.commons.httpclient.setURI()
.fonte