asmdaydream 发表于 2010-9-4 10:50

php读取中文目录乱码

读取文件夹的时候,中文目录出现乱码了
我都php文件都是utf-8的,在windows中文系统下面
在网上查了好长时间都没有解决
代码如下,各位帮忙看看吧,谢谢了
   [code] [color=#800080]$dir[/color] = [color=#008080]iconv[/color]("UTF-8","gb2312",[color=#800080]$dir[/color]);        
    [color=#800080]$dirs[/color] = [color=#008080]opendir[/color]([color=#800080]$dir[/color]);
    [color=#0000FF]while[/color]([color=#800080]$loopfile[/color] = [color=#008080]readdir[/color]([color=#800080]$dirs[/color]))
    {
        [color=#0000FF]if[/color]([color=#0000FF]true[/color] == [color=#008080]is_dir[/color]([color=#800080]$dir[/color].[color=#800080]$loopfile[/color]) ){
            [color=#008080]printf[/color]("  Dir:%s<br>",[color=#800080]$loopfile[/color]);
        }[color=#0000FF]else[/color]{
            [color=#008080]printf[/color]("  File:%s<br>",[color=#800080]$loopfile[/color]);
        }
    }[color=#008000]//[/color][color=#008000]end while[/color][/code]

[[i] 本帖最后由 asmdaydream 于 2010-9-4 10:51 编辑 [/i]]

gupiao175 发表于 2010-9-4 13:54

$dir = iconv("UTF-8","gb2312",$dir);  //这句去掉试过没有,或者颠倒过来写 iconv("gb2312","UTF-8",$dir);     
    $dirs = opendir($dir);
    while($loopfile = readdir($dirs))
    {
        if(true == is_dir($dir.$loopfile) ){
            printf("  Dir:%s<br>",$loopfile);
        }else{
            printf("  File:%s<br>",$loopfile);
        }
    }//end while
多尝试下,甚至可以把文件本身的编码也修改!
我的测试过你这个代码,就是什么编码转换也没加,显示中文正常!

asmdaydream 发表于 2010-9-4 23:52

本来是没有这句的,后来查了很多资料才找到这句,
这句加上也没有影响什么,设置里面的编码我都换过好几种了,
找不到完美解决的办法[em09]

gupiao175 发表于 2010-9-5 15:07

怪事了,我的只是在目录里建立一个记事本,然后随便输入几句打开的命令,就OK了.什么编码也没有设置,中文显示正常!
我的代码如下:
echo "文件:<br>";
$ha=opendir('e:/wdfmdb');
while ($file=readdir($ha))
{
   if ($file != "." && $file != "..") {
     $arr[]=$file;//附加到数组里
        }
}
closedir($ha);
print_r("<pre>");
print_r($arr);
print_r("</pre>");
你用这个代码试试!

asmdaydream 发表于 2010-9-5 15:21

试过了,中文也是乱码

    [23] => Wopti
    [24] => wow
    [25] => www
    [26] => [05-12-15]��������
    [27] => �߲����˹��߰�
    [28] => ����
    [29] => �漣Ӣ�����ܼ���
    [30] => �����ܼ�
    [31] => ������������

asmdaydream 发表于 2010-9-5 15:22

估计和我系统有什么的有关吧[em08]

cnenc 发表于 2010-9-6 16:36

编码问题.
可以用 iconv 解决.

建议, 永远不用要中文来做文件名. 那只会是悲剧的开始.没有终点的悲剧.

asmdaydream 发表于 2010-9-7 00:04

iconv也没能解决[em09],只能换成gb2312的编码,或到linux下面去utf-8,郁闷啊~~~~~~
又不是外国人,怎么能做到一个电脑上全是英文的东西


页: [1]

编程论坛