ファイル名にウムラウトが含まれる URL を取得するときに java.io.FileNotFoundException が発生する

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

質問

「」のような、ファイル名にウムラウトを含む 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top