tôi cố gắng để tải về các hình ảnh trong url sau:URL Tải hình ảnh chứa "è"
http://upload.tapcrowd.com//cache/ /_cp_100_100_stand_filière_300x212.jpg
Như bạn có thể thấy trong các trình duyệt này cho thấy một hình ảnh, nhưng trong ứng dụng của tôi Tôi nhận được một FileNotFoundException.
Tuy nhiên, nếu tôi thay đổi url của hình ảnh từ "è" thành "e". Tôi có thể tải nó thành ứng dụng của mình. Tuy nhiên điều này chỉ là một giải pháp tạm thời vì nó cần để có thể tải hình ảnh với dấu unicode.
Tôi làm cách nào để đạt được điều này?
Phương pháp sử dụng để tải về hình ảnh:
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);
mã kết quả làm việc cho tôi:
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);
có thể là sự cố mã hóa. bạn cần phải urlencode đường dẫn của bạn (một phần sau khi .com) – njzk2
Tôi đã thử URLEncoder.encode (url); nhưng không có thành công – ePeace
bạn đã chỉ định mã hóa hoặc bạn đã sử dụng mã hóa không dùng nữa chỉ với một arg? – ben75