ファイル名にウムラウトが含まれる URL を取得するときに java.io.FileNotFoundException が発生する
-
12-09-2019 - |
質問
「」のような、ファイル名にウムラウトを含む URL を取得しようとしています。http://somesimpledomain.com/some/path/überfile.txt"、しかし、それは私にjava.io.FileNotFoundExceptionを与えます。URL は utf8 ですが、リモート サーバー上のファイル名は latin1 でエンコードされているのではないかと思います。しかし、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エンコーディングを試してみましたか?例えば。
%FCberfile
所属していません StackOverflow