Php 带有特殊字符的文件名,如“quoté&引用;找不到

Php 带有特殊字符的文件名,如“quoté&引用;找不到,php,file,url,unicode,filenames,Php,File,Url,Unicode,Filenames,我的网站上有一个文件夹,专门存放随机文件。我使用php opendir列出所有文件,这样我就可以稍微调整页面的样式。但是我上传的带有特殊字符的文件不起作用。当我点击它们时,它说找不到文件。但是当我检查目录时,文件就在那里。看起来链接是错误的。知道如何获得指向这些文件名的带有特殊字符的正确链接吗?如果运行此操作,是否可以看到这些文件名 foreach (new DirectoryIterator('/path/to/folder') as $fileInfo) { if($fileInfo

我的网站上有一个文件夹,专门存放随机文件。我使用php opendir列出所有文件,这样我就可以稍微调整页面的样式。但是我上传的带有特殊字符的文件不起作用。当我点击它们时,它说找不到文件。但是当我检查目录时,文件就在那里。看起来链接是错误的。知道如何获得指向这些文件名的带有特殊字符的正确链接吗?

如果运行此操作,是否可以看到这些文件名

foreach (new DirectoryIterator('/path/to/folder') as $fileInfo) {
    if($fileInfo->isDot() || $fileInfo->isDir()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}
foreach(新的DirectoryIterator('/path/to/folder')作为$fileInfo){
如果($fileInfo->isDot()| |$fileInfo->isDir())继续;
echo$fileInfo->getFilename()。“
\n”; }

编辑:刚刚意识到我误读了这个问题。这很可能是某种编码问题,如波内尔所说,这很棘手。这取决于文件系统对文件名使用什么编码,以及Web服务器或PHP函数如何(如果)转换编码

首先,确保您的链接从不使用未编码的非ASCII字符。URL应采用UTF-8格式,即é应编码为%C3%A9。如果不起作用,请尝试%E9(ISO-8859-1中的)

您可能会发现
iconv()
函数对转换编码很有用
rawurlencode()
是必须的。

我尝试了:打印(“
  • ”.$count.“
  • ”。“\n”);但现在链接都是空的,如下所示: