将文件名传递给 Firefox 浏览器会导致其将空格替换为%2520
代替%20
.
我在名为的文件中有以下 HTMLmyhtml.html
:
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
当我加载时myhtml.html
在 Firefox 中,图像显示为损坏的图像。所以我右键单击该链接查看图片,它显示了修改后的 URL:
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
^
^-----Firefox changed my space to %2520.
有没有搞错?它将我的空间变成了%2520
。难道不应该将其转换为%20
?
如何更改此 HTML 文件以便浏览器可以找到我的图像?这里发生了什么?
稍微解释一下那是什么%2520
is :
公共空格字符编码为%20
正如您自己指出的。
这%
字符被编码为%25
.
你得到的方式%2520
当你的网址已经有一个%20
在其中,并再次进行 urlencoded,这会转换%20
to %2520
.
您(或您可能使用的任何框架)是否对字符进行双重编码?
Edit:对此进行一些扩展,特别是对于LOCAL链接。假设您想要链接到资源C:\my path\my file.html
:
- 如果您仅提供本地文件路径,则浏览器应该对给定的所有字符进行编码和保护(在上面,您应该给它加上空格,如图所示,因为
%
是一个有效的文件名字符,因此在转换为正确的 URL 时将对其进行编码(请参阅下一点)。
- 如果您提供的 URL 包含
file://
协议,您基本上是在声明您已采取所有预防措施并编码了需要编码的内容,其余的应被视为特殊字符。在上面的示例中,您应该提供file:///c:/my%20path/my%20file.html
。除了修复斜杠之外,客户端不应在此处对字符进行编码。
NOTES:
- 斜线方向 - 正斜线
/
用于 URL、反斜杠\
在 Windows 路径中,但大多数客户端都会通过将它们转换为正确的正斜杠来使用这两种路径。
- 此外,协议名称后面有 3 个斜杠,因为您默默地引用当前计算机而不是远程主机(完整的未缩写路径将是
file://localhost/c:/my%20path/my%file.html
),但大多数客户端将在没有主机部分(即仅两个斜杠)的情况下工作,假设您指的是本地计算机并添加第三个斜杠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)