包含在Windows Unicode字符列出目录(List directories containi

2019-06-23 08:33发布

我使用的是Windows 2003编写一些PHP代码。 我用的是XAMPP便携式(复制到d :)。 问题:

$path = 'D:\ebooks';
$all_file = scandir($path);
foreach ($all_file as $file) {
  if (is_dir("$path/$file") && $file != '.' && $file != '..') {
    echo $file . "<br />\n";
  }
}

当我调用脚本(与浏览器),我没有看到任何目录(d之内:\电子书)包含一个Unicode字符(我与越南,日本,中国测试,捷克)。

但是,如果我删除is_dir("$path/$file")该目录显示有许多奇怪的字符和许多??? 字符。

我怎样才能解决这个问题?

Answer 1:

不幸的是,有很多涉及到PHP访问Windows文件系统错误。 虽然Windows不会保存文件名作为UTF-16,PHP的内部使用更老的ANSI的API。 因此,最好只做的东西与在ASCII范围的文件名,或者切换到不同的操作系统。



Answer 2:

这可能与捷克帮助,也不会与中日韩(我仍然在寻找那)帮助。 越野车“理由”:UTF-8就可以了,只要它是可映射到Windows字符集。

PHP是这个令人不快的明确:

SCANDIR()和READDIR()不支持Unicode文件名

http://bugs.php.net/bug.php?id=34574

«PHP不支持Unicode操作,直到PHP6。»

写在2005年9月。

您也可以尝试抢DOS相当于短名称通过使用系统(“DIR / X”),解析从有短期和长期的名字和工作的结果。 显示长文件名,实际访问(用于统计,时间戳和文件打开当然)与短名称...



文章来源: List directories containing Unicode characters on Windows