2012-10-03 233 views
1

我有以下www.mywebsite.com/upload/server/php/files/foto/test/Aston_Martin_DBS_V12_coupé_(rear)_b-w.jpg特殊字符

此文件被上傳槽一個腳本。該文件存在於服務器上。 但是,由於url(é)中的特殊字符,我遇到了一些問題。

服務器上的文件名是Aston_Martin_DBS_V12_coup%C3%A9_(rear)_b-w.jpg,這是正確的。然而,不知何故,我的瀏覽器(Chrome)請求此頁面爲ISO-8859-1而不是UTF-8。

因此,我得到一個404 enter image description here

我使用jQuery文件上傳插件。

+0

應該使用'encode'。 –

回答

-1

如果文件名包含%字符代碼,則需要將這些代碼編碼到您的URL中。嘗試訪問Aston_Martin_DBS_V12_coup%25C3%25E9_(rear)_b-w.jpg

1

我刪除我的答案在這裏,我寫下新:

一般網站不包含非標準的字符的文件。文件通常會刪除非標準字符,有時候這些字符會被類似的標準字符所替代(波蘭語,從a到s)。例如 - im手動重命名文件,或者當我有很多文件時 - 我只是使用bash或php腳本刪除/替換服務器上的文件名中的字符。

無論如何,如果您必須使用原始文件名 - 您必須從ISO解碼並將它們編碼爲UTF8。

採取看看那個PHP代碼片段在這裏:

how to serve HTTP files with special characters

+0

你的意思是,在上傳後/更改文件名後? – edwardmp

+0

我更新了我的答案。你現在應該明白我的意思了。 – Kamil

+0

更改爲urlencode產生此:'Aston_Martin_DBS_V12_coup%25C3%25E9_(後方)_b-w.jpg'這也不起作用 – edwardmp

0

一些特殊的品質研究使問題在網址爲文件名 像

+ ,#,%,& 

對於那些通過URL使文件訪問這些文件其中不包含以上字母 外匯

str_replace(array(" ","&","'","+","#","%"),"-","filename") 

它會正常工作