Подтвердить что ты не робот

URLEncoder encode/URLDecoder декодируется в java (Android)

Я хочу использовать класс URLEncoder/URLDecoder (java.net.URLEncoder/URLDecoder) в приложении и методы: encode (String s, String enc)/decode (String s, String enc), но я не знаю, t знать, что может быть значением аргумента String enc? Я хочу кодировать/декодировать в типе содержимого MIME типа "x-www-form-urlencoded". Благодарим вас за помощь.

4b9b3361

Ответ 1

Параметр кодирования - это кодировка символов, которую вы используете. For example "UTF-8".

Ответ 2

Сначала вам нужно установить тип содержимого как "x-www-form-urlencoded". Затем любой контент, который вы хотите кодировать, кодирует его с помощью "UTF-8".

Например:

Для настройки содержимого на "x-www-form-urlencoded":

URL url = new URL("http://www.xyz.com/SomeContext/SomeAction"); <br>
URLConnection urlConnection = url.openConnection();<br>
....<br>
....<br>
urlConnection.setRequestProperty("Content-type","application/x-www-form-urlencoded");


Или, если вы используете какой-либо JSP, вы можете написать следующее поверх него.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><br>
< META http-equiv="Content-Type" content="text/html; charset=UTF-8">


< FORM action="someaction.jsp" enctype="application/x-www-form-urlencoded" name="InputForm" method="POST">

И использовать URLEncoder:

String encodedString = URLEncoder.encode("hello","UTF-8");

Ответ 3

JavaDoc содержит все подробности

Ответ 4

URLEncoder и URLDecoder оба являются исключением Throwable и поэтому должны быть как минимум заключены в блок try/catch. Однако есть более простой способ litle bit, используя android.net.Uri:

Uri.decode(string);
Uri.encode(string);

Это статические методы, использует utf-8, доступный с API-1, и не генерирует никаких исключений.

Ответ 5

Мой личный фаворит:

static String baseNameFromURL(URL url) {
    String shortName;
    String path = url.getPath();
    String escaped = path.substring(path.lastIndexOf('/') + 1);
    try {
        shortName = URLDecoder.decode(escaped, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        throw new Error(e.getMessage(), e);
    }
    int period = shortName.lastIndexOf('.');
    return period > -1 ? shortName.substring(0, period) : shortName;
}

Возвращает пустую строку, если URL-адрес не содержит имени файла, например https://stackoverflow.com/ или https://stackoverflow.com/info/. Если в части имени файла есть обратная косая черта, она сохраняется.

Вы можете удалить последние две строки, если вам нужно короткое имя с расширением.