具有特殊字符的文件名,例如“é”NOT FOUND

时间:2009-10-16 21:15:19

标签: php file url unicode filenames

我的网站上有一个文件夹只是为了随机文件。我使用php opendir列出所有文件,所以我可以设置页面样式。但我上传的特殊字符文件不起作用。当我点击它们时它说没有找到文件。但是当我检查目录时,文件就在那里。好像链接错了。任何想法我怎么能得到这些文件名的正确链接,其中包含特殊字符?

2 个答案:

答案 0 :(得分:4)

这很棘手。这取决于您的文件系统对文件名使用的编码以及您的Web服务器或PHP函数如何(如果)转换编码。

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

您可能会发现iconv()函数可用于转换编码。 rawurlencode()是强制性的。

答案 1 :(得分:0)

如果你运行它,你会看到它们吗?

foreach (new DirectoryIterator('/path/to/folder') as $fileInfo) {
    if($fileInfo->isDot() || $fileInfo->isDir()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}
编辑:刚才意识到我误解了这个问题。它可能是像porneL那样的编码问题