Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Картинки по кириллическому адресу

#java #android #изображения


Есть картинка расположенная по кириллическому адресу вида http://вася-пупкин.бел/NAME.jpg
И когда я пытаюсь её загрузить при помощи Glide или Picasso то ничего не выходит,
никакой реакции. Как можно декодировать URL в подходящий вид?
Сразу скажу что пробовал и не помогло:

Uri.encode(url)
IDN.toASCII(post.getImgUrl())

    


Ответы

Ответ 1



Вам надо было гуглить не "кириллический url", а "кириллический домен".А конкретно вам требуется: "Конвертация IDN в Punycode". Алгоритма я сходу не нашёл, но полюбому уже должны быть какие-нить готовые либы.

Ответ 2



Кириллический адрес url надо декодировать. Попробуйте использовать этот инструмент. Или же что-то выберите из поиска cyrillic url decoder.

Ответ 3



Метод который поможет перевести адрес из кириллицы в Punycode. public static String convertUnicodeURLToAscii(String url) throws URISyntaxException { if (TextUtils.isEmpty(url)) return url; url = url.trim(); // Handle international domains by detecting non-ascii and converting them to punycode boolean isAscii = CharMatcher.ASCII.matchesAllOf(url); if (!isAscii) { URI uri = new URI(url); boolean includeScheme = true; // URI needs a scheme to work properly with authority parsing if (uri.getScheme() == null) { uri = new URI("http://" + url); includeScheme = false; } String scheme = uri.getScheme() != null ? uri.getScheme() + "://" : null; String authority = uri.getRawAuthority() != null ? uri.getRawAuthority() : ""; // includes domain and port String path = uri.getRawPath() != null ? uri.getRawPath() : ""; String queryString = uri.getRawQuery() != null ? "?" + uri.getRawQuery() : ""; // Must convert domain to punycode separately from the path url = (includeScheme ? scheme : "") + IDN.toASCII(authority) + path + queryString; // Convert path from unicode to ascii encoding url = new URI(url).toASCIIString(); } return url; }

Комментариев нет:

Отправить комментарий