注册 登录
编程论坛 PHP技术论坛

php读取中文目录乱码

asmdaydream 发布于 2010-09-04 10:50, 7220 次点击
读取文件夹的时候,中文目录出现乱码了
我都php文件都是utf-8的,在windows中文系统下面
在网上查了好长时间都没有解决
代码如下,各位帮忙看看吧,谢谢了
   
程序代码:
$dir = iconv("UTF-8","gb2312",$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 10:51 编辑 ]
9 回复
#2
gupiao1752010-09-04 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
多尝试下,甚至可以把文件本身的编码也修改!
我的测试过你这个代码,就是什么编码转换也没加,显示中文正常!
#3
asmdaydream2010-09-04 23:52
本来是没有这句的,后来查了很多资料才找到这句,
这句加上也没有影响什么,设置里面的编码我都换过好几种了,
找不到完美解决的办法
#4
gupiao1752010-09-05 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>");
你用这个代码试试!
#5
asmdaydream2010-09-05 15:21
试过了,中文也是乱码

    [23] => Wopti
    [24] => wow
    [25] => www
    [26] => [05-12-15]��������
    [27] => �߲����˹��߰�
    [28] => ����
    [29] => �漣Ӣ�����ܼ���
    [30] => �����ܼ�
    [31] => ������������
#6
asmdaydream2010-09-05 15:22
估计和我系统有什么的有关吧
#7
cnenc2010-09-06 16:36
编码问题.
可以用 iconv 解决.

建议, 永远不用要中文来做文件名. 那只会是悲剧的开始.没有终点的悲剧.
#8
asmdaydream2010-09-07 00:04
iconv也没能解决,只能换成gb2312的编码,或到linux下面去utf-8,郁闷啊~~~~~~
又不是外国人,怎么能做到一个电脑上全是英文的东西
#9
tbwind2014-10-08 09:10
刚学PHP,专门注册来回这个老贴。
这个问题不难吧
程序代码:

$dir = iconv("UTF-8","gb2312",$dir);        
    $dirs = opendir($dir);
    while($loopfile = readdir($dirs))
    {
        if(true == is_dir($dir.$loopfile) ){
            printf("  Dir:%s<br>",iconv("gb2312","UTF-8",$loopfile));
        }else{
            printf("  File:%s<br>",iconv("gb2312","UTF-8",$loopfile));
        }
    }//end while
1