2008-10-17 3 views
155

я получаю следующее предупреждение при использовании java.net.URLEncoder.encode:java.net.URLEncoder.encode (String) устарел, что я должен использовать вместо этого?

warning: [deprecation] encode(java.lang.String) 
     in java.net.URLEncoder has been deprecated

Что я должен использовать вместо этого?

+23

Это ответ в устаревания тега в документации: "Вместо этого, использовать кодирование (String, String) метод, чтобы указать кодировку." См. Http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html. – 2008-10-17 20:09:16

ответ

228

Используйте другой метод encode в URLEncoder:

URLEncoder.encode(String, String) 

Первый параметр является текст для кодирования; второе - имя кодирующей кодировки для использования (например, UTF-8). Например:

System.out.println(
    URLEncoder.encode(
    "urlParameterString", 
    java.nio.charset.StandardCharsets.UTF_8.toString() 
) 
); 
+12

@jsh: Я в замешательстве, почему не должно быть URLDecoder? Почему это заставляет Java раздуваться? Это статические методы. На это тоже потребуется столько же усилий. Если вам нравится Python, почему вы программируете на Java? Это потому, что больше людей использует Java, чем Python, и вы получили Java-задание вместо работы Python? – stepanian 2012-02-27 09:07:54

+2

@ stepanian yep, вам нужно работать там, где работает. пакет python, который я обычно использую, ставит все эти средства кодирования и декодирования под одну крышу. Я в основном добавил этот комментарий, потому что мне нужно было найти и найти URLDecoder, и я подумал, что он может спасти кого-то пару минут, чтобы знать, что это было необходимо. – jsh 2012-02-29 16:06:48

20

Вы должны использовать:

URLEncoder.encode("NAME", "UTF-8"); 
1

Первый параметр является строка для кодирования; второе - имя кодировки символов для использования (например, UTF-8).

1

В качестве дополнительного задания для других ответов, вместо использования «UTF-8» вы можете использовать:

HTTP.UTF_8

, которая включена с Java 4 как часть org.apache. http.protocol библиотека, которая также входит так Android API 1.

18

Используйте класс URLEncoder:

URLEncoder.encode(String s, String enc) 

Где:

сек - строка для перевода.

enc - Название поддерживаемого character encoding.

Стандартные кодировок:

US-ASCII семибитные ASCII, иначе ISO646-США, он же основной латинский блок символа Unicode набор ISO-8859-1 ISO Latin Алфавит № 1, акаISO-Latin-1

UTF-8 восьмибитные UCS Формат преобразования

UTF-16BE Шестнадцать-битный UCS формат преобразования, порядок от старшего байта

UTF-16LE Шестнадцатибитный формат преобразования UCS, порядок байтов младшего порядка

UTF-16 Шестнадцатибитный формат преобразования UCS, порядок байтов, идентифицированный o ptional байт-Order Mark

Пример:

import java.net.URLEncoder; 

String stringEncoded = URLEncoder.encode(
    "This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8"); 
Смежные вопросы