2010-10-21 29 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