百度和google都翻遍了,试了很多方法还是没能解决。有哪位大哥解决了,帮忙下,
头疼啊。
  $fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
 // $this->filename  = fopen($this->filename, "rb");
header( "Accept-Ranges:bytes "); 
header('Content-Description: File Transfer');
      header( "Pragma: public" );
      header( "Expires: 0" ); // set expiration time
      header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
          header( "Content-type:".$this->mineType );
      header( "Content-Length: " . filesize( $this->filename ) );
      header( "Content-Disposition: attachment; filename=".$fn."" );
      header( 'Content-Transfer-Encoding: binary' );
     readfile( $this->filename );

解决方案 »

  1.   

    ...doc文件不是ASC2码或者UTF-8编码的,所以你要打开DOC文件,必须要调用微软的WORD文件
      

  2.   

    header("Content-Type: text/html; charset=gb2312");
      

  3.   

    直接下载算了!!!!
    <script>location.href='1.doc';</script>
    或者
    <iframe src="1.doc" style="display:none"></iframe>
      

  4.   


    $fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
    // $this->filename  = fopen($this->filename, "rb");
    header( "Accept-Ranges:bytes "); 
    header('Content-Description: File Transfer');
    header( "Pragma: public" );
    header( "Expires: 0" ); // set expiration time
    header( "Cache-Component: must-revalidate, post-check=0, pre-check=0" );
    header( "Content-type:".$this->mineType );
    header( "Content-Length: " . filesize( $this->filename ) );
    header( "Content-Disposition: attachment; filename=".$fn."" );
    header( 'Content-Transfer-Encoding: binary' );
    echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';
    readfile( $this->filename );
      

  5.   


    继续蛋疼,还是不行。测试下载txt文件却不会乱码。还有个问题,不能匹配中文文件名。如在file文件夹下有个 测试.doc。数据库中的记录 file/测试.doc
    结果却是:文件不存在。 都改成 ceshi.doc 却可以。这是什么原因?
      

  6.   

    windows系统, 文件名是 gb2312字符
      

  7.   

    LS的几位,关于不能读取中文文件名,要怎么解决啊。
     本机OS是 windows 。服务器是 linux ,都不能识别。
      

  8.   

    $fn = array_pop( explode( '/', strtr( $this->filename, '', '/' ) ) );
    // $this->filename  = fopen($this->filename, "rb");
    header( "Content-type:".$this->mineType );
    header( "Content-Length: " . filesize( $this->filename ) );
    header ( "Content-type:application/vnd.ms-word" );
    header ( "Content-Disposition:filename=" . iconv ( $fn, "GBK", "UTF-8" ) . ".doc" );
    echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';
    readfile( $this->filename );
      

  9.   

    还是字符集问题。
    检测数据库中是什么字符集,PHP脚本是什么字符集。
      

  10.   

    if(!is_file($this->filename))
        $this->filename = iconv("UTF-8", "GBK", $this->filename);
    if(!is_file($this->filename))echo "fuck";
      

  11.   


    header("Content-Disposition: attachment; filename=中国.doc");
    header("Content-Type: application/unknown");
    readfile('/var/www/中国.doc');Apache/2.2.14 (Ubuntu) Server 下测试下载回来的文件没有问题。中国.doc是用openoffice保存成的doc文件,内容就是从这个页面上copy的。
      

  12.   

    header( "Content-type:".$this->mineType );//不知道你用的什么编码,另外代码文件是什么编码,建议改成一致
    echo '<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">';//这个没用可以去掉
    readfile( $this->filename );//这是GBK,如果需要请转码