访问带有Java重音的URL无效

时间:2013-07-16 03:23:46

标签: java url utf-8 url-encoding

以下代码为我检索了一个URL内容并将其保存到文件中:

URI obj_uri = new URI(uri);

URLConnection connection = obj_uri.toURL().openConnection();
connection.connect();

byte[] buffer = new byte[1024];
String filename = "temp";

try (InputStream in = connection.getInputStream(); FileOutputStream writer = new FileOutputStream( new File(filename) )) {
    int len;
    while ( (len = in.read(buffer)) != -1) {
        writer.write( buffer, 0, len );
    }
}

return filename;

我的问题是,当此URI具有不同的符号时,例如“http://dbpedia.org/resource /Brasília”,无法检索内容。 DBpedia使用的URL编码是UTF-8,即使使用URLEncoder.encode( url, "UTF-8"),我的代码也无效。但是我的代码不会生成错误或异常,生成的文件(“temp”)以没有信息的方式结束(除了“”和“”)。

因此,如果URI正确并且即使使用其符号也可以访问,为什么我无法检索其内容并将其保存到文件中?

感谢您的帮助!