0

ファイル名にumlautが含まれる「 http://somesimpledomain.com/some/path/überfile.txt 」のようなURLを取得しようとしていますが、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) {
}

よろしく、ヘンドリック

4

2 に答える 2

4

URLは適切にエンコードする必要があります。サーバーが期待している文字セット/エンコーディングを知る必要があります。これを最初に試すことができます、

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

それでも問題が解決しない場合は、「ISO-8859-1」を「UTF-8」に置き換えて、再試行してください。

それも機能しない場合は、ファイルは存在しません:)

于 2009-09-21T17:35:04.843 に答える
0

urlencodingを試しましたか?例えば

%FCberfile
于 2009-09-21T17:19:05.010 に答える