java.io.FileNotFoundException при получении URL-адреса с умлаутами в имени файла

StackOverflow https://stackoverflow.com/questions/1455369

Вопрос

Я пытаюсь получить URL-адрес с умляутом в имени файла, что-то вроде "http://somesimpledomain.com/some/path/überfile.txt", но это дает мне исключение java.io.FileNotFoundException.Я подозреваю, что имя файла на удаленном сервере закодировано в латинице 1, хотя мой 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» и повторите попытку.

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

Другие советы

Вы пробовали урленкодировать?Например.

%FCberfile
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top