什么是服务器操作系统?
如果是Windows,您将无法访问以UTF-8编码的文件名下的文件,因为PHP使用的C IO库的Windows实现将仅在系统默认代码页中显示。对于西欧安装,代码页为1252。您可以使用iconv将UTF-8字符串转换为cp1252:
$winfilename= iconv('utf-8', 'cp1252', $utffilename);
(utf8_decode
也可以使用,但是对于映射到cp1252中范围0x80-0x9F的Windows扩展字符,它将给出错误的结果。)
PHP和其他使用stdio的程序完全无法访问名称中包含系统代码页指令表之外的字符的文件(例如,在西方语言中为希腊语)。有一些脚本语言可以通过Win32 API使用本机Unicode文件名,但是PHP5并不是其中一种。
当然,当将文件部署在UTF-8编码的不同OS上时,不应使用上述步骤。(即现代Linux。)