2010-10-21 30 views
2

我的浏览器显示与文件名网址为URL解码工作不正常

 
http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0%2C1%25.pdf 

实际的文件名是204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf

urldecode后,它给出错误的文件名作为 http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0,1%.pdf

更新

最初我以为它的问题的URL解码,但像名称204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%.pdf这样的文件在浏览器中呈现时会抛出错误的请求。我正在使用Kohana 3框架。它与服务器有关吗?

+2

它应该用'5'代替'0%2C5%25' '1'。 – Gumbo 2010-10-21 12:58:32

+0

您提供的网址实际上是说“0.1%”而不是“0.5%”。 – Spudley 2010-10-21 13:04:23

回答

4
$url = 'http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf'; 
$encode = urlencode($url); 
$decode = urldecode($encode); 

echo $url."<br />"; 
echo $encode."<br />"; 
echo $decode."<br />"; 

// outputs 
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf 
http%3A%2F%2F204160_20090604_Atropine_DCB_oogdruppels_0%2C5%25.pdf 
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf 

一切都好。你是错误的地方。

+0

是的,你是对的,我也测试过。按预期工作,如上面的codespec所示。可能是一些服务器问题。是这样吗? – 2010-10-21 13:15:47

+0

@Asif通过您的描述我可能会说它与Kohana对待URL的方式有关。我无法确定,因为我从来没有使用过它,但CI(Kohana位于CI中)有所调整。你应该在控制器和清理器被调用之前在主要的'index.php'文件中进行调试。 – Frankie 2010-10-21 17:38:39

+0

@ Frankie:我试图调试index.php。但是,点击链接后,任何请求都不会在index.php或其请求处理程序类中进行。您能否给我一些与CI相关的参考资料,以便我们调整请求? – 2010-10-22 05:42:47

2

您正在查看两个不同的文件。

将urlencode 204160_20090604_Atropine_DCB_oogdruppels_编码为204177_20090604_Chloorhexidine_DCB_oogdruppels_是不可能的,编码不会改变字母字符。

错误很可能在创建文件列表并输出链接的代码中;链接标题和文件名之间的映射看起来很混乱。

+0

好吧,发现了。但这只是一个评论。 – Gumbo 2010-10-21 13:05:05

0

这将使用C#

Server.UrlDecode( “http://www.example.com/pdf/204160_20090604_Atropine_DCB_oogdruppels_0,5%25.pdf”)

给你确切的文件名为M

,(逗号)被编码为%2C %(百分比)是由浏览器

如果使用Request.Url它会解码,(逗号),但不为%(百分比)

012编码为%

因此Server.UrlDecode(“xyz”)解码除%(百分号)以外的所有字符,即上述文件名中有“%25”

+0

我正在使用PHP。 – 2010-10-21 13:16:13