java.io.FileNotFoundException при получении URL с умлаутами в имени файла - PullRequest
0 голосов
/ 21 сентября 2009

Я пытаюсь получить URL с умлаутом в имени файла, что-то вроде "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) {
}

С уважением, Хендрик

Ответы [ 2 ]

3 голосов
/ 21 сентября 2009

URL должен быть правильно закодирован. Вы должны знать, какую кодировку / кодировку ожидает ваш сервер. Вы можете попробовать это сначала,

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

Если это не сработает, замените «ISO-8859-1» на «UTF-8» и повторите попытку.

Если это тоже не сработает, файл не существует:)

0 голосов
/ 21 сентября 2009

Вы пробовали urlencoding это? Например.

%FCberfile
...