java.io.FileNotFoundException при получении URL-адреса с умлаутами в имени файла
-
12-09-2019 - |
Вопрос
Я пытаюсь получить 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