彻底解决跨浏览器下PHP下载文件名中的中文乱码问题

<?php$ua = $_SERVER["HTTP_USER_AGENT"];$filename = "中文 文件名.txt";
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);header('Content-Type: application/octet-stream');if (preg_match("/MSIE/", $ua)) {header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
} else {header('Content-Disposition: attachment; filename="' . $filename . '"');
}print 'ABC';
?>

上面是一个比较通用的解决方案(据说xp+IE7会有问题,未验证)。

这个问题是在使用CI-Excel-Generation-Library时遇到的,解决办法如下:

  private function set_headers() {$ua = $_SERVER["HTTP_USER_AGENT"];$filename = $this->filename . ".xls";$encoded_filename = urlencode($filename);$encoded_filename = str_replace("+", "%20", $encoded_filename);     header("Pragma: public");header("Expires: 0");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");//header("Content-Type: application/vnd.ms-excel;charset=UTF-8");header("Content-Type: application/download");;if (preg_match("/MSIE/", $ua)) {  header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');} else if (preg_match("/Firefox/", $ua)) {  header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');} else {  header('Content-Disposition: attachment; filename="' . $filename . '"');}header("Content-Transfer-Encoding: binary ");}

 

转载于:https://www.cnblogs.com/jiji262/archive/2012/09/21/2697205.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ML.NET Cookbook:(4)如何调试实验或预览管道?

大多数ML.NET数据操作都是延迟执行的&#xff1a;声明时&#xff0c;操作符不会立即处理数据&#xff0c;而是验证该操作是否可行。执行被推迟到实际请求输出数据为止。这意味着架构不匹配将在声明时抛出&#xff0c;但是直到执行时才抛出数据错误。延迟计算是数据库系统的一种…

数学本是非常有趣的,只是教科书呈现的方式太死板

数学是基础学科&#xff0c;是打开科学大门的钥匙。数学能力决定着一个人的科技创新能力&#xff0c;而科技创新能力决定着一个孩子未来的竞争力。数学也是一门不断累积的学问&#xff0c;学习数学也是一个渐进的过程&#xff0c;要是基础的概念不理解&#xff0c;基础学习得不…

oracle期间平均成本,小李飞刀系列之Oracle EBS期间平均成本(PAC)--生产成本计算(四)制造费用设置及成本计算...

在上两篇文章中介绍了资源的设置及其成本计算&#xff0c;本篇文章将介绍与资源关联非常紧密的制造费用的设置及成本计算。1. 制造费用设置图 1. 制造费用主设置界面制造费用主设置界面如图1所示&#xff0c;成本要素选择”制造费用”&#xff0c;并设置制造费用的名称、说明、…

通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格...

多运行时是一个非常新的概念。在 2020 年&#xff0c;Bilgin Ibryam 提出了 Multi-Runtime&#xff08;多运行时&#xff09;的理念&#xff0c;对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华。那到底什么是多运行时呢&#xff1f;首先还是得从分布式应用的四大类…

oracle+查表物理块数,如何统计一段时间内 发生在某个表上的 物理读写的块数

script from macleanhttp://www.askmaclean.com/archiv ... t-grow-history.htmlScript:查找表或索引增长的历史信息MARCH 22, 2012 BY MACLEAN LIU 4 COMMENTS有同学在Oracle ALL STARS群中提问 如何通过AWR来查找一段时间内&#xff0c;数据库段对象(堆表、索引)等的空间增长…

如何把文件压缩变成一张图片?

全世界只有3.14 % 的人关注了数据与算法之美先准备好三个文件。图片、压缩包、批处理文件。然后编辑bat文件。压缩命令代码是&#xff1a;copy /b 图片.jpg压缩包.rar 最后输出文件名.jpg例如&#xff1a;copy /b A.jpgtest.rar B.jpg 注意空格。保存之后执行bat批处理文件。执…

.NET程序崩溃了怎么抓 Dump ? 我总结了三种方案

一&#xff1a;背景 1. 讲故事最近几天接到了几个crash的求助&#xff0c;可能这几个朋友没玩过怎么去生成dump&#xff0c;只能手把手教&#xff0c;感觉也不是一个办法&#xff0c;所以有必要总结一下&#xff0c;后续再有朋友咨询的话&#xff0c;我就可以把这篇文章丢过去了…

敏捷软件开发之结对编程

2019独角兽企业重金招聘Python工程师标准>>> 说明 【作为推荐的最佳实践&#xff0c;结对编程早已为人们熟知&#xff0c;并且也是所有XP实践中争议最大的一个】 结对编程技术是一个非常简单和直观的概念&#xff1a;两位程序员肩并肩地坐在同一台电脑前合作完成同一…

oracle 磁盘挂载格式化,Linux简单磁盘挂载

临时挂载&#xff1a;1、fdisk /dev/sda ---磁盘名根据实际情况2、n --添加新分区&#xff0c;linux要求最多四个主分区&#xff0c;最少一个主分区&#xff0c;最多一个扩展分区&#xff0c;所以一般设置为三个主分区和一个扩展分区&#xff0c;扩展分区由多个逻辑分区组成&am…

iPhone比小米贵3000,贵在哪里?

原文刊于Cnbeta&#xff1a;http://www.cnbeta.com/articles/206935.htm&#xff0c;以及小米论坛&#xff1a;http://bbs.xiaomi.cn/thread-4837309-1-1.html&#xff0c;除这两地及51CTO之外均为未授权转载&#xff0c;首发小米论坛&#xff0c;次发Cnbeta&#xff0c;三发51…

Build 2021 :正式发布.NET 6 Preview4

微软在不断推进.NET 6的可用性&#xff0c;昨晚的Build 2021大会上发布了Preview4&#xff0c; 这是一个很大的版本更新&#xff0c;带来大量的功能&#xff0c;以及接近最终的产品交付质量&#xff0c;不过&#xff0c;这并不意味着可以在生产环境使用了&#xff0c;正式发布R…

程序员与代码的几种关系,每种都会被我们鄙视

全世界只有3.14 % 的人关注了数据与算法之美程序员很大部分时间都在和代码打交道&#xff0c;所以程序员和代码之间的关系&#xff0c;在很多常人看来&#xff0c;是无法理解的&#xff0c;下面我们就来聊聊。找到你仅仅是为了将你消灭掉在程序员的世界里面&#xff0c;一个词语…

POJ 1151

刚看了这道题目完全没思路&#xff0c;在网上找了结题报告&#xff0c;了解到需用离散化线段树扫描&#xff0c;但菜鸟一个&#xff0c;发现数据规模并不大&#xff0c;用离散化完全可以&#xff0c;所以只用了离散化&#xff0c;思路还是很清晰的&#xff0c;但还是贡献了5个小…

.NET 6 Preview 4 已发布,ASP.NET Core 更新内容

原文&#xff1a;bit.ly/3wFqDy9作者&#xff1a;Daniel译者&#xff1a;王亮.NET 6 预览版 4 现已发布&#xff0c;其中包括对 ASP.NET Core 的许多新改进。下面是此次预览版中 ASP.NET Core 的更新内容&#xff1a;引入最小 API异步流HTTP 日志中间件新项目中使用 Kestrel 作…

linux 装nano命令,linux下安装 nano 如果没有这个命令的话~~可以看下

首先查看下这个目录里有没有Centos-Base.repo这个文件(附件里有这个)然后用Xmanager下的xftp 把本机上的这个文件复制到虚拟机中的/目录下[rootfox ~]#mv Centos-Base.repo /etc/yum.repos.d/[rootfox ~]# cd /etc/yum.repos.d/[rootfox yum.repos.d]# lsCentos-Base.repo Cen…

struts2对action的指定方法进行校验

2019独角兽企业重金招聘Python工程师标准>>> 在strust2中&#xff0c;我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。 一、对于输入校验struts2提供了两种实现方法&#xff1a; 1、采用手工编写代码实现。 &#xff08;1&#xff09;通过…

EFCore之命令行工具

介绍EFCore工具可帮助完成设计数据库时候的开发任务&#xff0c;主要用于通过对数据库架构进行反向工程来管理迁移和搭建DbContext和实体类型。EFCore .NET命令行工具是对跨平台.NET Core CLI工具的扩展&#xff0c;该工具执行需要具有.NET Core SDK(具有 Sdk"Microsoft.N…

linux新建文件夹明率,linux新建文件和文件夹命令

1、touch命令touch命令用来修改文件的访问时间、修改时间。如果没有指定时间&#xff0c;则将文件时间属性改为当前时间。当指定文件不存在&#xff0c;touch命令变为创建该文件。语法&#xff1a;touch [-acm] [-d STRING-time] [-r reference-file] [-t [[CC]YY]MMDDhhmm[.ss…

想让数据分析更简便,怎能少了它!

R作为一种统计分析软件&#xff0c;广泛应用于生物、医学、电商、新闻等数据相关行业&#xff0c;是目前主流数据应用软件之一。为了更好地帮助大家了解并快速入门R语言&#xff0c;现超级数学建模携手柯老师以R语言为基础&#xff0c;向大家隆重推出《R语言基础》系列课。柯老…

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测 目录 分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测分类效果基本描述程序设计参考…