首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >html空间显示为%2520而不是%20

html空间显示为%2520而不是%20
EN

Stack Overflow用户
提问于 2013-04-18 21:55:30
回答 6查看 133.3K关注 0票数 123

将文件名传递给firefox浏览器会导致它用%2520而不是%20替换空格。

我在一个名为myhtml.html的文件中有以下超文本标记语言

代码语言:javascript
复制
<img src="C:\Documents and Settings\screenshots\Image01.png"/>

当我将myhtml.html加载到火狐中时,图像显示为一个损坏的图像。所以我右击链接来查看图片,它显示了这个修改后的URL:

代码语言:javascript
复制
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
                    ^
                    ^-----Firefox changed my space to %2520.

什么鬼东西?它将我的共享空间转换成了%2520。它不应该将其转换为%20吗?

如何更改此HTML文件,以便浏览器可以找到我的图像?这是怎么回事?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-18 22:04:47

稍微解释一下%2520是什么:

正如您所提到的,常用空格字符被编码为%20%字符被编码为%25

获取%2520的方法是当您的url中已经有一个%20时,再次进行url编码,这会将%20转换为%2520

您(或您可能使用的任何框架)是否对字符进行双重编码?

编辑:在这方面做了一些扩展,特别是对于本地链接。假设您想要链接到资源C:\my path\my file.html

  • 如果您只提供本地文件路径,则在转换为正确的URL (请参阅下一点)时,浏览器应对给定的所有字符进行编码和保护(在上面,您应该使用所示的空格,因为%是一个有效的文件名字符,因此将对其进行编码)。
  • 如果您使用file://协议提供URL,则您基本上是在声明您已采取了所有预防措施并对需要编码的内容进行了编码,其余的应作为特殊字符处理。因此,在上面的示例中,您应该提供file:///c:/my%20path/my%20file.html。除了修复斜杠之外,客户端不应在此处对字符进行编码。

备注:

  • 正斜杠-正斜杠/在URL中使用,\路径中使用反斜杠,但大多数客户端都会将它们转换为正确的正斜杠。
  • 此外,协议名称后面有3个斜杠,因为您是默默地引用当前计算机而不是远程主机(完整的无缩写路径将是file://localhost/c:/my%20path/my%file.html ),但同样,大多数客户端将在没有主机部分(即仅两个斜杠)的情况下工作,假设您指的是本地计算机并添加第三个斜杠。
票数 251
EN

Stack Overflow用户

发布于 2013-04-18 22:04:25

出于某种--可能是有效的--原因,url被编码了两次。%25是the编码的%符号。所以原始的url看起来像这样:

代码语言:javascript
复制
http://server.com/my path/

然后它被urlencoded了一次:

代码语言:javascript
复制
http://server.com/my%20path/

还有两次:

代码语言:javascript
复制
http://server.com/my%20path/

所以你不应该做urlencoding在你的例子中-因为其他组件似乎已经为你做了那样的事情。使用简单的空格

票数 14
EN

Stack Overflow用户

发布于 2013-04-18 22:01:46

当你试图通过火狐浏览器访问本地文件名时,你必须强制使用file:\\\协议(http://en.wikipedia.org/wiki/File_URI_scheme),否则火狐将对你的空间进行两次编码。将html代码段从以下位置更改:

代码语言:javascript
复制
<img src="C:\Documents and Settings\screenshots\Image01.png"/>

要这样做:

代码语言:javascript
复制
<img src="file:\\\C:\Documents and Settings\screenshots\Image01.png"/>

或者这样:

代码语言:javascript
复制
<img src="file://C:\Documents and Settings\screenshots\Image01.png"/>

然后,firefox被通知这是一个本地文件名,并且它在浏览器中正确地呈现图像,并且正确地对字符串进行了一次编码。

有用的链接:http://support.mozilla.org/en-US/questions/900466

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16084935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档