URL解码无法按预期工作

时间:2010-10-21 12:56:23

标签: php urlencode urldecode

我的浏览器显示文件名为

的网址
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这样的文件会抛出Bad请求。我正在使用Kohana 3框架。它与服务器有关吗?

3 个答案:

答案 0 :(得分: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

一切都好。你的错误在其他地方。

答案 1 :(得分:2)

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

无法将204160_20090604_Atropine_DCB_oogdruppels_ urlen编码为204177_20090604_Chloorhexidine_DCB_oogdruppels_,编码不会更改字母字符。

错误很可能出现在创建文件列表并输出链接的代码中;链接标题和文件名之间的映射似乎搞砸了。

答案 2 :(得分:0)

这将使用c#

为您提供确切的文件名m
  

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

,(逗号)编码为%2c %(百分比)由浏览器编码为%25

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

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