url filename中的特殊字符会导致问题

时间:2012-10-03 18:09:44

标签: php apache2

我有以下www.mywebsite.com/upload/server/php/files/foto/test/Aston_Martin_DBS_V12_coupé_(后方)_b-w.jpg

此文件通过脚本上传。该文件存在于服务器上。 但是,由于网址(é)中的特殊字符,我遇到了一些问题。

服务器上的文件名是Aston_Martin_DBS_V12_coup%C3%A9_(rear)_b-w.jpg,这是正确的。但不知何故,我的浏览器(Chrome)请求此页面为ISO-8859-1而不是UTF-8。

因此,我得到了404。 enter image description here

我正在使用jQuery文件上传插件。

3 个答案:

答案 0 :(得分:1)

我从这里删除了我的答案,我写了新的:

通常网站不包含带有非标准字符的文件。文件通常删除了非标准字符,有时字符被类似的标准字符替换(波兰语±a,ś到s)。例如 - 我手动重命名文件,或者当我有很多文件时 - 我只使用bash或php脚本删除/替换服务器上文件名中的字符。

无论如何,如果你必须使用原始文件名 - 你必须从ISO解码它们并将它们编码为UTF8。

在这里看看那个PHP代码片段:

how to serve HTTP files with special characters

答案 1 :(得分:0)

一些特殊的Charater在文件名的url中出现问题 喜欢

+ ,#,%,&

对于那些通过url make文件访问但不包含上述字母的文件 外汇

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

它会正常工作

答案 2 :(得分:-1)

如果文件名包含%字符代码,则需要对您的网址进行编码。尝试访问Aston_Martin_DBS_V12_coup%25C3%25E9_(rear)_b-w.jpg