检索文件名中包含变音符号的 url 时出现 java.io.FileNotFoundException

标签 java url encoding filenotfoundexception

我试图检索文件名中带有元音变音的网址,例如“http://somesimpledomain.com/some/path/überfile.txt”,但它给了我一个java.io.FileNotFoundException。我怀疑远程服务器上的文件名是用 latin1 编码的,尽管我的 url 是 utf8 编码的。但我尝试更改 url 的编码没有成功,我不知道如何进一步调试它。请帮忙!

代码如下:

   HttpURLConnection conn = null;
    try {
       conn = (HttpURLConnection) new URL(uri).openConnection();
       conn.setRequestMethod("GET");
    } catch (MalformedURLException ex) {}
    } catch (IOException ex){}

    // Filter headers
    int i=1;
    String hKey;
    while ((hKey = conn.getHeaderFieldKey(i)) != null) {
        conn.getHeaderField(i);
        i++;
    }

    // Open the file and output streams
    InputStream in = null;
    OutputStream out = null;
    try {
        in = conn.getInputStream();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

    try {
        out = response.getOutputStream();
    } catch (IOException ex) {
}

问候, 亨德里克

最佳答案

URL 需要正确编码。您必须知道您的服务器期望什么字符集/编码。你可以先试试这个,

 String uri = "http://somesimpledomain.com/some/path/" + 
     URLEncoder.encode(filename, "ISO-8859-1");

如果这不起作用,请将“ISO-8859-1”替换为“UTF-8”,然后重试。

如果这也不起作用,则文件不存在:)

关于检索文件名中包含变音符号的 url 时出现 java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455369/

相关文章:

java - 如何读取包含两列的文本文件并将其插入树形图中?

php - 如何在 symfony 重定向中获取 referer url

c# - 从 URL 获取图像

c# - Unicode @font-face 文本在 FF 中工作,而不在 Chrome 和 IE 中工作

Java 将类型信息与来自 toBytes 的 Byte[] 数组一起存储

python编码utf 'Miały'不等于 'Miały'

java - Java高效实现互信息

java - 如何在 Android Studio 上永久更改语言?

java - 如何模拟/监视/ stub 父类(super class)的 protected 方法

javascript - 从当前 url javascript 获取字符串斜杠后的值