適切なコンストラクターを選択すると、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 への変換に関するすべての問題がチェックされているわけではありません。出発点として使用してください。