Intereting Posts
Как вернуть Android SDK Tools в более раннюю версию? Прозрачная строка состояния, не работающая с windowTranslucentNavigation = "false" Поддержка Emoji Keyboard для EditField в android Поймать исключение AsyncTask. Нужна мысль Android Studio DexIndexOverflowException: идентификатор метода не в Ошибка упаковки Kivy с библиотекой numpy для Android с использованием buildozer Android: Как я могу использовать элементы списка слоев и фигуры для рисования горизонтального правила при установке в качестве фона? Скрытие заголовка панели действий не работает в старых версиях Android (с помощью ActionBarSherlock) Ошибка: «app_name» не переведено в af Android-приложение зависает после внедрения Google Firebase Получить контекст активности в адаптере из фрагмента Объединение ListActivity и ActionBarActivity Нет предложений по умолчанию в Eclipse Juno Изменение цвета поля представления InfoWindow маркера в google maps api v2 Добавление вертикальной полосы прокрутки в AlertDialog в Android?

Как кодировать url в android?

Я использую сетку для отображения изображения с помощью синтаксического анализа xml, у меня есть какое-то исключение, например java.lang.IllegalArgumentException: Illegal character in path at index 80: http://www.theblacksheeponline.com/party_img/thumbspps/912big_361999096_Flicking Off Douchebag.jpg , Как решить эту проблему?, Я хочу отобразить все виды URL-адресов, кто-нибудь знает, пожалуйста, дайте образец кода для меня ..

Спасибо всем

Solutions Collecting From Web of "Как кодировать url в android?"

Кодирование URL-адресов выполняется аналогично на Android, как в Java SE;

 try { String url = "http://www.example.com/?id=123&art=abc"; String encodedurl = URLEncoder.encode(url,"UTF-8"); Log.d("TEST", encodedurl); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } 

Также вы можете использовать это

 private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%"; String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS); 

Это самый простой метод

Как говорит Бен в своем комментарии, вы не должны использовать URLEncoder.encode для полных URL-адресов, потому что вы измените семантику URL-адреса в следующем примере из W3C :

URIs http://www.w3.org/albert/bertram/marie-claude и http://www.w3.org/albert/bertram%2Fmarie-claude НЕ идентичны, так как во втором случае кодированная косая черта Не имеют иерархического значения.

Вместо этого вы должны закодировать составные части URL-адреса, независимо от следующего из RFC 3986, раздел 2.4

При нормальных обстоятельствах единственный раз, когда октеты в URI кодируются в процентах, – это процесс создания URI из его составных частей. Это когда реализация определяет, какие зарезервированные символы должны использоваться как разделители подкомпонентов и которые можно безопасно использовать в качестве данных. После создания URI всегда находится в своей процентной форме.

Короче говоря, для вашего случая вы должны кодировать / удалять свое имя файла и затем собирать URL-адрес.

Вы не кодируете весь URL-адрес , а только его части, которые поступают из «ненадежных источников».

 String query = URLEncoder.encode("Hare Krishna ", "utf-8"); String url = "http://stackoverflow.com/search?q=" + query; 

URLEncoder следует использовать только для кодирования запросов, вместо этого используйте класс java.net.URI :

 URI uri = новый URI (
     "HTTP",
     "Www.theblacksheeponline.com", 
     Msgstr "" ""
     ноль);
 Строковый запрос = uri.toASCIIString ();

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

 public String parseURL(String url, Map<String, String> params) { Builder builder = Uri.parse(url).buildUpon(); for (String key : params.keySet()) { builder.appendQueryParameter(key, params.get(key)); } return builder.build().toString(); } 

Недавно я написал быстрый кодер URI для этой цели. Он даже обрабатывает символы Unicode. http://www.dmurph.com/2011/01/java-uri-encoder/