2

在获取scandir()php 函数的输出时,我有一些文件夹,其中的名称是阿拉伯语。问题是输出是“ ???????”以显示阿拉伯字母。

这是我的一段代码:

<?php
$dir    = '../dirs';
$files1 = scandir($dir);
foreach($files1 as $key => $value)
{
    if($value != '.' && $value != '..' && $value != '')
    echo "<option>".$value."</option>";
}
?>

有任何想法吗?

4

3 回答 3

1

你应该 <meta charset="utf-8">在你的html页面中使用。
也看看这个替代方案,这可能会解决问题:

$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;


查看结果以确定问题是否仍然存在

于 2013-08-18T07:55:18.467 回答
1

在 PHP5 中,直到今天我还没有找到一种方法来处理文件名中包含扩展字符的文件。我被引导相信这是 PHP 本身的一个问题,这就是为什么版本 6 需要这么长时间来开发的原因。(PHP6 计划提供完整的 Unicode 支持。)

读取和写入内容中包含扩展字符的文件绝对没有问题,但文件名本身不能包含它们。这是目前我个人还没有找到解决方法的唯一限制。幸运的是,这通常不是问题,因为网络安全文件名当前不包含导致问题的扩展字符。

于 2013-08-18T09:10:13.880 回答
0

你可以试试看 !

 $files1 = scandir($dir);  
    foreach ($files1 as $file) {
       echo  utf8_encode($file);
       echo '<br>';
    }
于 2016-08-04T04:26:20.407 回答