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

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -