Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.net.URI chokes on special characters in host part

I have a URI string like the following:

http://www.christlichepartei%F6sterreichs.at/steiermark/

I'm creating a java.lang.URI instance with this string and it succeeds but when I want to retrieve the host it returns null. Opera and Firefox also choke on this URL if I enter it exactly as shown above. But shouldn't the URI class throw a URISyntaxException if it is invalid? How can I detect that the URI is illegal then?

It also behaves the same when I decode the string using URLDecoder which yields

http://www.christlicheparteiösterreichs.at/steiermark/

Now this is accepted by Opera and Firefox but java.net.URI still doesn't like it. How can I deal with such a URL?

thanks

like image 635
Raoul Duke Avatar asked Sep 27 '10 11:09

Raoul Duke


1 Answers

Java 6 has IDN class to work with internationalized domain names. So, the following produces URI with encoded hostname:

URI u = new URI("http://" + IDN.toASCII("www.christlicheparteiösterreichs.at") + "/steiermark/");
like image 185
axtavt Avatar answered Sep 19 '22 10:09

axtavt