htmlurlfilenamesurl-encoding

A html space is showing as %2520 instead of %20


Passing a filename to the firefox browser causes it to replace spaces with %2520 instead of %20.

I have the following HTML in a file called myhtml.html:

<img src="C:\Documents and Settings\screenshots\Image01.png"/>

When I load myhtml.html into firefox, the image shows up as a broken image. So I right click the link to view the picture and it shows this modified URL:

file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
                    ^
                    ^-----Firefox changed my space to %2520.

What the heck? It converted my space into a %2520. Shouldn't it be converting it to a %20?

How do I change this HTML file so that the browser can find my image? What's going on here?


Solution

  • A bit of explaining as to what that %2520 is :

    The common space character is encoded as %20 as you noted yourself. The % character is encoded as %25.

    The way you get %2520 is when your url already has a %20 in it, and gets urlencoded again, which transforms the %20 to %2520.

    Are you (or any framework you might be using) double encoding characters?

    Edit: Expanding a bit on this, especially for LOCAL links. Assuming you want to link to the resource C:\my path\my file.html:

    NOTES: