Я хочу использовать класс URLEncoder/URLDecoder (java.net.URLEncoder/URLDecoder) в приложении и методы: encode (String s, String enc)/decode (String s, String enc), но я не знаю, t знать, что может быть значением аргумента String enc? Я хочу кодировать/декодировать в типе содержимого MIME типа "x-www-form-urlencoded". Благодарим вас за помощь.
URLEncoder encode/URLDecoder декодируется в java (Android)
Ответ 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/
. Если в части имени файла есть обратная косая черта, она сохраняется.
Вы можете удалить последние две строки, если вам нужно короткое имя с расширением.