URI выдает URISyntaxException , когда вы выбираете соответствующий конструктор:
URI someUri=new URI("http","www.christlicheparteiösterreichs.at","/steiermark",null);
java.net.URISyntaxException: недопустимый символ в имени хоста с индексом 28: http://www.christlicheparteiösterreichs.at/steiermark
Вы можете использовать IDN , чтобы исправить это:
URI someUri=new URI("http",IDN.toASCII("www.christlicheparteiösterreichs.at"),"/steiermark",null);
System.out.println(someUri);
System.out.println("host: "+someUri.getHost()));
Выход:
http://www.xn - christlicheparteisterreichs-5yc.at/steiermark
хост: www.xn--christlicheparteisterreichs-5yc.at
ОБНОВЛЕНИЕ относительно проблемы куриного яйца:
Вы можете позволить URL делать работу:
public static URI createSafeURI(final URL someURL) throws URISyntaxException
{
return new URI(someURL.getProtocol(),someURL.getUserInfo(),IDN.toASCII(someURL.getHost()),someURL.getPort(),someURL.getPath(),someURL.getQuery(),someURL.getRef());
}
URI raoul=createSafeURI(new URL("http://www.christlicheparteiösterreichs.at/steiermark/readme.html#important"));
Это всего лишь быстрый способ, он не проверяет все вопросы, касающиеся преобразования URL-адреса в URI. Используйте это как отправную точку.