Podczas używania pojawia się następujące ostrzeżenie java.net.URLEncoder.encode
:
ostrzeżenie: kodowanie [przestarzałe] (java.lang.String) w java.net.URLEncoder został uznany za przestarzały
Czego powinienem używać zamiast tego?
java
url
network-programming
deprecated
Frank Krueger
źródło
źródło
Odpowiedzi:
Użyj innej
encode
metody w URLEncoder :Pierwszy parametr to tekst do zakodowania; drugi to nazwa kodowania znaku, którego należy użyć (np
UTF-8
.). Na przykład:źródło
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
itd. Niestety,URLEncoder.encode
nie akceptujeCharset
... (ale wiele innych moethods zrobić).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. Za pomocą stałej statycznegoUTF_8
„StoString()
sposobu jak schemat kodowania postać rzucajava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
jaktoString()
zwrotów«java.nio.charset.CharsetICU [UTF-8]». Aby uzyskać pożądany „UTF-8”, użyj jegoname()
metody.Powinieneś użyć:
źródło
Użyj klasy URLEncoder :
Gdzie :
Standardowe zestawy znaków:
Przykład:
źródło
Pierwszym parametrem jest Łańcuch do zakodowania; drugi to nazwa kodowania znaków do użycia (np. UTF-8).
źródło
Jako dodatkowe odniesienie dla innych odpowiedzi, zamiast używać „UTF-8” , możesz użyć:
HTTP.UTF_8
który jest zawarty od Java 4 jako część biblioteki org.apache.http.protocol, który jest również zawarty od API Android 1.
źródło
org.apache.http.protocol.HTTP
klasie biblioteki Apache HttpClient 4.x.Korzystanie z
org.apache.commons.httpclient.URI
nie jest ściśle problemem; problemem jest to, że celujesz w niewłaściwy konstruktor, który jest amortyzowany.Używam tylko
Rzeczywiście oznaczy to jako amortyzację. Potrzebne jest podanie co najmniej jednego dodatkowego argumentu (pierwszego, poniżej), a najlepiej dwóch:
escaped
: true, jeśli sekwencja znaków URI jest w postaci znaku zmiany znaczenia. fałsz inaczej.charset
: ciąg znaków, aby wykonać kodowanie specjalne, jeśli jest wymaganeBędzie to dotyczyć niezalecanego konstruktora w tej klasie. Idealne użycie byłoby takie:
Trochę szalony-późno w grze (włosy ponad 11 lat później - egad! ), Ale mam nadzieję, że to pomaga komuś innemu, szczególnie jeśli metoda na drugim końcu jest wciąż oczekuje URI, takiego jak
org.apache.commons.httpclient.setURI()
.źródło