当获取php的scandir()
函数的输出时,我有一些文件夹,其中名称是阿拉伯语。问题是输出为“???????
”以显示阿拉伯字母。
这是我的一段代码:
<?php
$dir = '../dirs';
$files1 = scandir($dir);
foreach($files1 as $key => $value)
{
if($value != '.' && $value != '..' && $value != '')
echo "<option>".$value."</option>";
}
?>
有什么想法吗?
答案 0 :(得分:1)
<meta charset="utf-8">
另外看看这个替代方案,这可以解决问题:$dir = "/tmp";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
sort($files);
print_r($files);
rsort($files);
print_r($files);
也可以使用命令行运行脚本,这可能会给你一些线索。
我不知道这个是否有效。但无论如何它是:
if(PHP_OS == "WIN")
$out = system("dir");
else
$out = system("ls");
echo $out;
查看结果以确定问题是否仍然存在
答案 1 :(得分:1)
在PHP5中,我还没有找到一种方法来处理文件名中包含扩展字符的文件。我被认为这是PHP本身的一个问题,这就是为什么版本6需要很长时间才能开发出来的原因。 (PHP6计划具有完整的Unicode支持。)
读取和写入内容中包含扩展字符的文件绝对没有问题,但文件名本身不能包含它们。这是目前我个人没有找到解决方法的唯一限制。幸运的是,它通常不是问题,因为Web安全文件名当前不包含导致问题的扩展字符。
答案 2 :(得分:0)
你可以尝试一下!
$files1 = scandir($dir);
foreach ($files1 as $file) {
echo utf8_encode($file);
echo '<br>';
}