Я получаю следующее предупреждение при использовании java.net.URLEncoder.encode
:
предупреждение: [не рекомендуется] кодировать (java.lang.String) в java.net.URLEncoder устарел
Что я должен использовать вместо этого?
java
url
network-programming
deprecated
Фрэнк Крюгер
источник
источник
Ответы:
Используйте другой
encode
метод в URLEncoder :Первый параметр - это текст для кодирования; вторая - имя используемой кодировки символов (например,
UTF-8
). Например:источник
StandardCharsets.US_ASCII
иStandardCharsets.UTF_8
т. д. К сожалению,URLEncoder.encode
не принимаетCharset
... (но многие другие методы принимают).URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
. Используя константу статическогоUTF_8
«ыtoString()
метода в качестве схемы кодировки символов бросаетjava.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
какtoString()
возвращает„java.nio.charset.CharsetICU [UTF-8]“. Чтобы получить желаемый «UTF-8», используйтеname()
вместо этого его метод.Вы должны использовать:
источник
Используйте класс URLEncoder :
Куда :
Стандартные кодировки:
Пример:
источник
Первый параметр - это String для кодирования; второе - имя используемой кодировки символов (например, UTF-8).
источник
В качестве дополнительной ссылки для других ответов вместо использования «UTF-8» вы можете использовать:
HTTP.UTF_8
которая включена с Java 4 как часть библиотеки org.apache.http.protocol, которая включена также с Android API 1.
источник
org.apache.http.protocol.HTTP
классов.Использование
org.apache.commons.httpclient.URI
не является строго проблемой; проблема в том, что вы нацелены не на тот конструктор, который не рекомендуется.Используя только
Будет действительно помечать это как обесцененное. Необходимо предоставить как минимум один дополнительный аргумент (первый, ниже), а в идеале два:
escaped
: true, если последовательность символов URI находится в экранированной форме. ложь в противном случае.charset
: строка charset для экранирования, если требуетсяЭто будет предназначаться для недооцененного конструктора в пределах этого класса. Таким образом, идеальное использование будет таким:
Немного сумасшедший - поздно в игре (более чем 11 лет спустя - egad! ), Но я надеюсь, что это поможет кому-то еще, особенно если метод в дальнем конце все еще ожидает URI, такой как
org.apache.commons.httpclient.setURI()
.источник