zoukankan      html  css  js  c++  java
  • 解决php输出文件下载时文件名含中文时出现乱码

    解决php输出文件下载时文件名含中文时出现乱码

    2011-10-19

    接前篇 前篇提到了用php生成网页快捷方式 进行下载 但是却存在一个文件名乱码的问题

    php下载时,用一个header可以确定保存为的名字:

    header( ‘Content-Disposition: attachment; filename=”‘.$saved_name.’”‘ );//$saved_name存为的名字

    但是如果是中文的话,在ie下是乱码。其他浏览器是正常的。

    这时候,需要urlencode($saved_name),ie下可以保存为正常的中文名字了。

    但是其他浏览器在url编码时候不会自动解码。

    这时候就要靠判断浏览器类型了了:

    if(strpos($_SERVER['HTTP_USER_AGENT'],”MSIE”))
    header( ‘Content-Disposition: attachment; filename=”‘.urlencode($this->saved_name).’”‘ );//如果是ie存为的名字要urlencode
    else

    header( ‘Content-Disposition: attachment; filename=”‘.$this->saved_name.’”‘ );//存为的名字

    这样就可以解决这个问题。

    另附一个网上看到的一个输出文件的例子:

    header( “Pragma: public” );

    header( “Expires: 0″ ); // 一定要设置不缓存哦。

    header( “Cache-Component: must-revalidate, post-check=0, pre-check=0″ );

    header( “Content-type:”.$mineType );

    header( “Content-Length: ” . filesize( $path) );

    if(strpos($_SERVER['HTTP_USER_AGENT'],”MSIE”))

    header( ‘Content-Disposition: attachment; filename=”‘.urlencode($saved_name).’”‘ );//如果是ie存为的名字要urlencode

    else header( ‘Content-Disposition: attachment; filename=”‘.$saved_name.’”‘ );//存为的名字

    header( ‘Content-Transfer-Encoding: binary’ );

    readfile( $path);//读取并输出

  • 相关阅读:
    编写更好的API
    C,C++语法基础 | 字符串 | 05
    C,C++语法基础 | 变量,表达式与顺序语句 | 01
    业务数据分析 | 深入浅出数据分析入门 | 01
    linux全套 | 目录 | 00
    linux全套 | 组管理和权限管理 | 08
    linux全套 | crond任务调度 | 09
    linux全套 | linux磁盘分区,挂载 | 10
    linux全套 | 网络配置 | 11
    linux全套 | 进程管理 | 12
  • 原文地址:https://www.cnblogs.com/holyes/p/da050f03ffb03e6913806567e9f1e824.html
Copyright © 2011-2022 走看看