中文目录和文件遍历时遇到乱码,转码后却遇到文件递归缺失了,求运行代码后解答我的问题

中文目录和文件遍历时遇到乱码,转码后却遇到文件递归缺失了,求运行代码后解答我的问题

<?php
function echoEmpty($count){
    while($count>1){
        $count--;
        echo '&nbsp;&nbsp;&nbsp;&nbsp;';
    }
}
function readW($path,$count=0){
    $handle=opendir($path);
    $count++;

    while(($item=readdir($handle))!==false){

        if($item!='.'&&$item!='..'){
            $item=iconv('gb2312', 'utf-8',$item);
            if(is_dir($path.'/'.$item)){
                echoEmpty($count);

                echo "目录:".$item.'<br>';
                readW($path.'/'.$item,$count);
            }else{
                echoEmpty($count);
                echo "文件:".$item.'<br>';
            }
        }

    }
}

readW('123');

这是我的文件目录,如下所示:

http://img1.sycdn.imooc.com//climg/5c3b05080001652601950172.jpg

$item=iconv('gb2312', 'utf-8',$item);

这段代码保留的话,结果如下所示:

http://img1.sycdn.imooc.com//climg/5c3b04b1000140ad02200199.jpg

如果去掉,则遍历正常,只是乱码了,结果如下:

http://img1.sycdn.imooc.com//climg/5c3b04de00011f1202690189.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕查理 2019-01-14 11:11:23

您好,添加上iconv设置时,会将中文目录判断为文件,因此不会输出目录内部的文件。建议尽量不使用中文目录名称。祝学习愉快!

  • 提问者 兮儿1993 #1
    那中文目录和文件的遍历怎么解决呢?
    2019-01-15 11:02:04
  • 好帮手慕查理 回复 提问者 兮儿1993 #2
    您好,中文文件可以操作。iconv会判断为文件。中文目录可以改变系统编码尝试进行测试。但建议尽量不使用中文目录名称。祝学习愉快!
    2019-01-15 11:36:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师