如是。有一个文件,文件名是“新建文本文档.txt”;放在网站的“/”下,用include包含文件时,也无法读取文件(文件不是空的)。用is_file()检测出是false。但是文件是存在的。不知道怎样才能用unlink把“新建文本文档.txt”这个文件删除了。
现在要解决的是is_file或unlink对文件名中有中文的文件的识别。只要能识别出来就可以删除了。

解决方案 »

  1.   

    unlink(iconv('gb2312','utf-8','新建文本文档.txt'));
      

  2.   

    在linux环境下和win下都试过 
    用is_file去判断含全角文字文件名的文件是没有问题的
      

  3.   

    别说unlink,你在linux下面用rm -rf 也不见得删除得了啊
      

  4.   

    <html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    </head>
    <body>
    <?php
    //显示垃圾文件内容
    $file="C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\xflm2\\news\\contents\\新建文本文档.txt";
    $file=iconv('gb2312','utf-8',$file);
            //echo "OK";//$msg=unlink("C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\xflm2\\news\\contents\\新建文本文档.txt");
            if(is_file($file))
                $msg="yes";
            else $msg="no-";
            echo "ok2-";
            //unlink(iconv('gb2312','utf-8','新建文本文档.txt'));
            die($msg);
    ?>
    结果显示的是:“ok2-no-”;
      

  5.   

    也不行啊。在6楼,用$file=iconv('gb2312','utf-8',$file);转成gbk/gb2312了。但is_file($file)。还是输出了“no-”。也就是没识别出来。
      

  6.   

    完整代码如下:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?php
    $del=$_GET['del'];
    if($del!="" && $del!=null){
        $delfile=dirname(__FILE__)."/test/$del";
        $msg=unlink($delfile);
        echo "del file: $delfile<br />";
        if($msg)
            echo "<script type='text/javascript'>alert('成功删除文件');</script>";
        else
            echo "<script type='text/javascript'>alert('删除文件失败');</script>";
    }$flist=fileList(dirname(__FILE__)."/test");
    if(count($flist)>0){
        echo "<table><tr><td>文件列表</td><td>操作</td></tr>\n";
        for($i=0;$i<count($flist);$i++)
    echo "<tr><td>".$flist[$i]."</td><td><a href='".$_SERVER['PHP_SELF']."?del=".$flist[$i]."'>删除</a></td></tr>\n";
        echo "</table>";
    }else
        echo "<h1>未发现文件!</h1>";/**
     * 文件列表
     * @param string $dir 文件夹
     * @return 字符串数组
     */
    function fileList($dir){ //文件列表
            @$handle=opendir($dir);
            $i=0;
    while (@$file = readdir($handle)) {
                if(!is_dir($file) && !is_link($file)) {
                    $filelist[$i++]=iconv("gb2312","utf-8",$file);
                }
    }
            return $filelist;
    }
    ?>
      

  7.   

    代码列出文件所在目录下test目录下的文件列表,并删除。
      

  8.   

    $filelist[$i++]=iconv("gb2312","utf-8",$file);是把 gb2312 轉成 utf-8 吧參數調轉過來了...
      

  9.   

    不行的。大家看下这个代码:
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset:GB2312">
    <title>filelist</title>
    </head>
    <body><?php
    $del=$_GET['del'];
    if($del!="" && $del!=null){
        $delfile=dirname(__FILE__);
        $msg=unlink($delfile);
        echo "del file: $delfile<br />";
        if($msg)
            echo "<script type='text/javascript'>alert('成功删除文件');</script>";
        else
            echo "<script type='text/javascript'>alert('删除文件失败');</script>";
    }$flist=fileList(dirname(__FILE__));
    if(count($flist)>0){
        echo "<table><tr><td>文件列表</td><td>操作</td></tr>\n";
        for($i=0;$i<count($flist);$i++)
    echo "<tr><td>".$flist[$i]."</td><td><a href='".$_SERVER['PHP_SELF']."?del=".$flist[$i]."'>删除</a></td></tr>\n";
        echo "</table>";
    }else
        echo "<h1>未发现文件!</h1>";/**
     * 文件列表
     * @param string $dir 文件夹
     * @return 字符串数组
     */
    function fileList($dir){ //文件列表
            @$handle=opendir($dir);
            $i=0;
    while (@$file = readdir($handle)) {
                if(!is_dir($file) && !is_link($file)) {
                    //$filelist[$i++]=iconv("gb2312","utf-8",$file);
                    $filelist[$i++]=$file;
                }
    }
            return $filelist;
    }
    ?></body>
    </html>
    实现功能:查找程序所在目录下所有文件,并提供删除功能。可是,只要文件名中有中文就不能删除。
      

  10.   

    $filelist[$i++]=iconv("utf-8","gb2312",$file);
    这样就对了
      

  11.   

    英文的系统不? 要用PHP删除是没戏了
      

  12.   

      $delfile=dirname(__FILE__);
      $msg=unlink($delfile);-------------------你在删除什么?
      

  13.   

    China
    win:gbk
    linux/unix...:utf-8
      

  14.   

    $FName=Mb_convert_encoding($FName,"UTF-8","ASCII,UTF-8,GBK,JIS,EUC-JP,SJIS,UCS-2LE,JIS,eucjp-win,sjis-win");
    UNLINK($FName);