2012-11-10 4 views
1

내 앱에는 URL의 이미지를 표시하는 ImageView가 있습니다.이미지의 URL 인코딩이 잘못되었습니다.

좋은 :

 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); 
     return bitmap; 

이 숫자 또는 영어 문자를 가지고 (공간과 같은) 다른 문자와 함께 작동하지 않습니다 URL을에서만 작동 :

나는이 방법을 사용하여 이미지를 다운로드 URL :http://site.com/images/image.png

잘못된 URL :http://site.com/images/image 1.png

,536,

URL 인코딩 (URLEncoder.encode)을 변경하려고 시도했지만 전체 URL을 변경합니다 (슬래시, 요행 ... 포함).

인코딩 후에 일부 문자를 대체해야합니까? 아니면 더 좋은 방법이 있을까요?

감사합니다 :)

답변

3

"Url encoding in Android"

당신은 전체 URL, "신뢰할 수없는 소스"에서 온 그것의 부분을 인코딩하지 않습니다. 당신은 당신이 만들거나 URL을 재구성하는 방법을 알고 의 URL의 특정 부분을 처리하고있는 경우이 괜찮

String query = URLEncoder.encode("apples oranges", "utf-8"); 
String url = "https://stackoverflow.com/search?q=" + query; 

-yanchenko. 모든 URL 문자열을 처리 할 수있는보다 일반적인 접근 방법은 아래의 내 대답을 참조하십시오. - 크레이그 B

String urlStr = "http://abc.dev.domain.com/0007AC/ads/800x480 15sec h.264.mp4"; 
URL url = new URL(urlStr); 
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef()); 
url = uri.toURL(); 
+0

감사합니다! :)하지만 여전히 약간의 문제가 있습니다. 히브리어 문자로는 작동하지 않습니다. 어떻게해야합니까? – eviabs

+0

URLEncoder를 사용하여 히브리어 문자 부분을 명시 적으로 인코딩해야한다고 생각합니다. 비 ASCII 문자가 URI로 처리되는 경우는 거의 없지만 [여기] (http://developer.android.com/reference/java/net/URLEncoder.html)의 "URI 구성 요소 인코딩 및 디코딩"섹션을 확인하고 이 [link] (http://stackoverflow.com/a/2744184/909271) – 1O1

+0

URL 또는 IRI (Internationalized Resource Identifier)를 사용하고 있습니까? – 1O1

관련 문제