java.io.filenotfoundException عند استرجاع عنوان URL مع Umlauts في اسم الملف

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

سؤال

أحاول استرداد عنوان URL مع Umlaut في اسم الملف، شيء مثل "http://somesimpledomain.com/some/path/überfile.txt."، لكن هذا يعطيني java.io.filenotfoundexception. أظن أن اسم الملف على الخادم البعيد يتم ترميزه في Latin1، على الرغم من أن عنوان 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 إلى ترميزه بشكل صحيح. عليك أن تعرف ما الذي يتوقعه Charset / ترميز الخادم الخاص بك. يمكنك تجربة هذا أولا،

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

إذا لم ينجح ذلك، فاستبدل "ISO-8859-1" مع "UTF-8" وحاول مرة أخرى.

إذا لم يعمل ذلك أيضا، فلا يوجد ملف :)

نصائح أخرى

هل حاولت urlencoding ذلك؟ على سبيل المثال

%FCberfile
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top