Есть картинка расположенная по кириллическому адресу вида http://вася-пупкин.бел/NAME.jpg
И когда я пытаюсь её загрузить при помощи Glide или Picasso то ничего не выходит, никакой реакции. Как можно декодировать URL в подходящий вид?
Сразу скажу что пробовал и не помогло:
Uri.encode(url)
IDN.toASCII(post.getImgUrl())
Ответ
Метод который поможет перевести адрес из кириллицы в 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;
}
Комментариев нет:
Отправить комментарий