1

I want to convert below url

https://sdcude.pdakmddda.at/sdtddio/img/thumbnails/original/Öffnungszeiten Test-638.jpg

To

https://sdcude.pdakmdda.at/sdtddio/img/thumbnails/original/%C3%96ffnungszeiten%20Test-638.jpg

Logcat01-29 16:40:36.195: W/System.err(15131): java.net.MalformedURLException: Protocol not found: https%3A%2F%2Fsdcdre.pdadkdedia.at%2Fdddio%2Fimg%2Fthumbnails%2Foriginal%2F%C3%96ffnungszeiten+Test-638.jpg
01-29 16:40:36.218: W/System.err(15131):    at java.net.URL.<init>(URL.java:178)
01-29 16:40:36.218: W/System.err(15131):    at java.net.URL.<init>(URL.java:127)
01-29 16:40:36.218: W/System.err(15131):    at com.peak.media.HomeActivityNewViewPager$FirstDownloadFileFromURL.doInBackground(HomeActivityNewViewPager.java:2478)
01-29 16:40:36.218: W/System.err(15131):    at com.peak.media.HomeActivityNewViewPager$FirstDownloadFileFromURL.doInBackground(HomeActivityNewViewPager.java:1)
01-29 16:40:36.218: W/System.err(15131):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-29 16:40:36.218: W/System.err(15131):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-29 16:40:36.218: W/System.err(15131):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-29 16:40:36.218: W/System.err(15131):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-29 16:40:36.218: W/System.err(15131):    at java.lang.Thread.run(Thread.java:856)

i need above result after encoding. i don't know which encoding is use for above url.

String newurl=URLEncoder.encode(url,"UTF-8");

After convert i got below url using UTF-8

[https%3A%2F%2Fsddde.psdfma.co%2Fstudio%2Fimg%2Fthumbnails%2Foriginal%2F%C3%96ffnungszeiten+Test-638.jpg][2]

Mahesh
  • 1,559
  • 6
  • 27
  • 57

3 Answers3

1

Just because of space coming in url Ravi Thapliyal answer is not right otherwise it is right

For me below is working

String ALLOWED_URI_CHARS = "@#&=*+-_ .,:!?()/~'%"; 
                    String spaceurl = Uri.encode(f_url[0], ALLOWED_URI_CHARS);
                    String newurl=spaceurl.replaceAll(" ", "%20");
Mahesh
  • 1,559
  • 6
  • 27
  • 57
0

Use the URL class to help split your URL string and create a URI. The multi-parameterized URI constructor would take care of encoding the URL for you and unlike URLEncoder the spaces would be converted correctly to %20 instead of +.

URL url = new URL(
    "http://example.com/studio/img/thumbnails/original/Öffnungszeiten Test-638.jpg"
);
try {
    String encURL = new URI(url.getProtocol(),
            url.getHost(), url.getPath(), null).toASCIIString();
    System.out.println(encURL);
} catch (URISyntaxException e) {
    e.printStackTrace();
}

Output :

http://example.com/studio/img/thumbnails/original/%C3%96ffnungszeiten%20Test-638.jpg
Ravi K Thapliyal
  • 51,095
  • 9
  • 76
  • 89
  • @Mahesh, I've updated the answer to take care of the spaces. I've also switched to using a sample url. I believe this to be much easier for you than your current approach. – Ravi K Thapliyal Jan 29 '15 at 16:26
0
URI uri = new URI("https",
                "sdcdre.deadmddia.co",
                "/studio/img/thumbnails/original/sfsnungszeiten Test-638.jpg",
                null,
                null);
uri.toASCIIString();
Mahesh
  • 1,559
  • 6
  • 27
  • 57
Autocrab
  • 3,474
  • 1
  • 15
  • 15