2012-10-03 237 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") 

它会正常工作