How to handle UTF-8 encoded Korean character in URL for downloading images using Android URL object -
goal
to download image through url string contains korean characters (utf-8 encoded).
problem
in following code, string urlstring
carries string contains, example, korean character 콘 (whose utf-8 code %ec%bd%98):
http://domain.com/image/콘test.png
an ioexception caught @ statement:
bitmap = bitmapfactory.decodestream(urlobject.openconnection().getinputstream()); // try catch ioexception
code
public void loadimagewithurlstring(imageview imageview, string urlstring) { url urlobject; try { urlobject = new url(urlstring); // try catch malformedurlexception bitmap bitmap; bitmap = bitmapfactory.decodestream(urlobject.openconnection().getinputstream()); // try catch ioexception imageview.setimagebitmap(bitmap); } catch (malformedurlexception e) { log.d("congliu", "loadimagewithurlstring() : oops url caught malformedurlexception " + urlstring); imageview.setimageresource(r.drawable.default_image); e.printstacktrace(); } catch (ioexception e) { log.d("congliu", "loadimagewithurlstring() : oops url caught ioexception " + urlstring); imageview.setimageresource(r.drawable.default_image); e.printstacktrace(); } }
update - error messages
08-16 16:51:59.194: w/system.err(6911): java.io.filenotfoundexception: http://domain.com/image/우test.png 08-16 16:51:59.194: w/system.err(6911): @ org.apache.harmony.luni.internal.net.www.protocol.http.httpurlconnectionimpl.getinputstream(httpurlconnectionimpl.java:521) 08-16 16:51:59.194: w/system.err(6911): @ com.domain.android.mainactivity.loadimagewithurlstring(mainactivity.java:1288) 08-16 16:51:59.194: w/system.err(6911): @ com.domain.android.mainactivity$13$1.run(mainactivity.java:926) 08-16 16:51:59.194: w/system.err(6911): @ android.os.handler.handlecallback(handler.java:587) 08-16 16:51:59.194: w/system.err(6911): @ android.os.handler.dispatchmessage(handler.java:92) 08-16 16:51:59.194: w/system.err(6911): @ android.os.looper.loop(looper.java:130) 08-16 16:51:59.194: w/system.err(6911): @ android.app.activitythread.main(activitythread.java:3691) 08-16 16:51:59.194: w/system.err(6911): @ java.lang.reflect.method.invokenative(native method) 08-16 16:51:59.194: w/system.err(6911): @ java.lang.reflect.method.invoke(method.java:507) 08-16 16:51:59.194: w/system.err(6911): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:912) 08-16 16:51:59.194: w/system.err(6911): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:670) 08-16 16:51:59.194: w/system.err(6911): @ dalvik.system.nativestart.main(native method)
update - utf-8
sorry misunderstand utf-8 code, correct version has been put goal section.
ok have 2 options, try each
... inputstream is=urlobject.openconnection().getinputstream(); is.setencoding("iso-8859-1"); // try "utf-8" if doesn't work bitmap = bitmapfactory.decodestream(is); ...
or
string imageurl = "우test.png"; string host = "http://domain.com/image/"; string encodedurl = host + urlencoder.encode(imageurl ,"utf-8");
Comments
Post a Comment