Perl URL编码.. URL中的#问题

时间:2013-04-17 05:17:38

标签: perl url-encoding

我的网址中包含空格和#,我使用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 并按下输入时,请将我带到页面。

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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

您可以使用uri_escape()和uri_unescape()函数来实现此目的。