我有以下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。
我正在使用jQuery文件上传插件。
答案 0 :(得分:1)
我从这里删除了我的答案,我写了新的:
通常网站不包含带有非标准字符的文件。文件通常删除了非标准字符,有时字符被类似的标准字符替换(波兰语±a,ś到s)。例如 - 我手动重命名文件,或者当我有很多文件时 - 我只使用bash或php脚本删除/替换服务器上文件名中的字符。
无论如何,如果你必须使用原始文件名 - 你必须从ISO解码它们并将它们编码为UTF8。
在这里看看那个PHP代码片段:
答案 1 :(得分:0)
一些特殊的Charater在文件名的url中出现问题 喜欢
+ ,#,%,&
对于那些通过url make文件访问但不包含上述字母的文件 外汇
str_replace(array(" ","&","'","+","#","%"),"-","filename")
它会正常工作
答案 2 :(得分:-1)
如果文件名包含%
字符代码,则需要对您的网址进行编码。尝试访问Aston_Martin_DBS_V12_coup%25C3%25E9_(rear)_b-w.jpg