2013-02-01 21 views
5

が含まれていますダウンロード画像のURLは、私は、次のURLで画像をダウンロードしようとする「E」

http://upload.tapcrowd.com//cache//_cp_100_100_stand_filière_300x212.jpg

ブラウザで見ることができるように、これは画像を示しているが、私のアプリに私はFileNotFoundExceptionを取得します。

ただし、画像のURLを「è」から「e」に変更した場合。私は正常に私のアプリにそれをダウンロードすることができます。しかしこれは、ユニコードのサインで画像をダウンロードできる必要があるため、一時的な解決策に過ぎません。

どうすればこの問題を解決できますか?画像をダウンロードするために使用さ

方法:私の作品

 Bitmap bitmap = null; 
     URL imageUrl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); 
     conn.setConnectTimeout(30000); 
     conn.setReadTimeout(30000); 
     conn.setInstanceFollowRedirects(true); 
     InputStream is = conn.getInputStream(); 
     OutputStream os = new FileOutputStream(f); 
     Utils.CopyStream(is, os); 
     os.close(); 
     bitmap = decodeFile(f, maxheight, maxwidth); 

結果コード:

 Bitmap bitmap = null; 
     int slashIndex = url.lastIndexOf('/'); 
     String filename = url.substring(slashIndex + 1); 
     filename = URLEncoder.encode(filename, "UTF-8"); 
     url = url.subSequence(0, slashIndex + 1) + filename; 
     URL imageUrl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); 
     conn.setConnectTimeout(30000); 
     conn.setReadTimeout(30000); 
     conn.setInstanceFollowRedirects(true); 
     InputStream is = conn.getInputStream(); 
     OutputStream os = new FileOutputStream(f); 
     Utils.CopyStream(is, os); 
     os.close(); 
     bitmap = decodeFile(f, maxheight, maxwidth); 
+0

おそらくエンコードの問題です。パスをurlencodeする必要があります(.comの後の部分) – njzk2

+0

URLEncoder.encode(url)を試しました。しかし、成功していない – ePeace

+0

あなたはエンコードを指定しましたか、またはただ1つの引数で非推奨のエンコードを使用しましたか? – ben75

答えて

3

URLEncoderを使用してURLをエンコード:

String baseUrl = "http://upload.tapcrowd.com//cache//"; 
String imageName = "_cp_100_100_stand_filière_300x212.jpg"; 
URL imageUrl = new URL(baseUrl+URLEncoder.encode(imageName ,"UTF-8")); 

それはで動作しますあなたのブラウザブラウザはあなたのURLバーにアクセントを入力するときにエンコーディングを行うのに十分スマートです。

+0

これはうまくいきません – ePeace

+2

全部ではなく部分をurlencodeする必要があります。 – njzk2

+0

それは私のためにそれを固定しましたが、njzk2はその答えを最初に得ました。ありがとう – ePeace

関連する問題