我的网址中包含空格和#
,我使用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 并按下输入时,请将我带到页面。
这里发生了什么?
答案 0 :(得分:1)
不是Perl问题。 Web主机上的重定向已被破坏!比较:
答案 1 :(得分:0)
不要依赖其自动URL编码。您可以在每次需要使用URL时强制对URL进行编码/解码。
您可以使用uri_escape()和uri_unescape()函数来实现此目的。