0

我有一个带有空格的 URL,其中#我使用它来转义URI::Escape以获取以下内容。

https://copy.com/1rsdM7TvVcLfGebc/name%20with%20space%20and%20%23%20in%20it.jpg ?

注意:在我复制上述内容的原始页面中,单击链接不起作用。该页面的 HTML 显示在此处。

<a href=3D"https://copy.com/1rsdM7TvVcLfGebc/name%20with%20space%20and%20%23=
%20in%20it.jpg?source=3Dbsf" style=3D"color: white; font-weight: =
bold;">name with space and # in it.jpg</a>

如您所见#,正确编码为%23。问题是当我单击链接时,浏览器不会将其保留为%23而是将其编码#并阻止我到达目的地。这就是链接在浏览器中的外观。您可以看到,在#空格也没有呈现为%20之后。其他浏览器的行为不同,它们都不起作用。

https://www.copy.com/s/1rsdM7TvVcLfGebc/name%20with%20space%20and%20# in it.jpg

当我在浏览器中手动替换#%23并正确按下输入时,它会将我带到页面。

这里发生了什么?

4

2 回答 2

1

不是 Perl 问题。Web 主机上的重定向已损坏!相比:

于 2013-04-17T09:26:53.613 回答
0

不要依赖它的自动 URL 编码。您可以在每次需要使用 URL 时强制它们进行编码/解码。

为此,您可以使用 uri_escape() 和 uri_unescape() 函数。

于 2013-04-17T05:32:12.567 回答