导读跟大家讲解下有关如何解决php生成文件名乱码问题,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说如何解决php生成文件名
跟大家讲解下有关如何解决php生成文件名乱码问题,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说如何解决php生成文件名乱码问题,小编也收集到了有关如何解决php生成文件名乱码问题的相关资料,希望大家看到了会喜欢。
php生成文件名乱码的解决办法:1、将所有的+号替换为“%20”;2、添加“header(“Content-type: appli应收账款占用资金cation/vnd.ms-excel”);”;3、删除“filename=xxx”两边的空格。
本文操作环境:Windows7系统、PHP7.1版DELL G3电脑
PHP导出文件名励志名言警句乱码解决
问题场景:
统计数据需要增加一个到处excel功能 于是使用compor安装了phpspreadsheet组件进行数据处理并导出。遇到ASCII命名的文件名时 都是导出一切正常 但是遇到中文文件名时导出的文件名是乱码的。
此处直接贴出解决方案:
1. 文件名处理
因为PHP的urlencode函数会将各种空白字符转码为+号 这个+号无论是chrome还是Firefox都是不会转义的
所以此处将所有的+号再次替换为%20
$file_name = '导出文件.xls'; // 这是原本要导出的文件名$encoded_filename黄昏歌词 = url_encode($file_name);// 将文件名进行urlencode转码$encoded_filename = str_replace('+', '%20', $encoded_filename);
2. 头文件:文件类型声明
如果导出的是一个文件不是确定的excel类型时使用文件头No.1
我导出的是一个excel下xls格式的表格所以 我使用的是文件头No.2
// 文件头No.1: 告诉浏览器这里要有一个文件流输出header("Content-type: application/octet-stream");// 文件头No.2: 告诉浏览器这里要输出一个excel文件header("Content-type: application/vnd.ms-excel");
头文件: 下载文件名声明
这一步是关键, 有两个需要注意的地方
无论是filename=xxx还是filename*=xxx, 等号两边不要有空格
filename*=xxx 这个配置项其实是由3部分组成的 分别是字符集(utf8)、语言(空)和urlencode过的文件名 其中 语言是一个空字符串 用单引号引起来 三个部分之间不要有空格。
header('Content-Disposition: attachment; filename="foo-%c3%a4.xls"; filename*=UTF-8\'\'foo-%c3%a4.xls');
我采用如上代码分别使用chrome firefox, 360, ie是非分不清11测试均运作良好。希中国传统文化英语作文望也能帮到你。
【推荐学习:PHP视频教程】
以上就是如何解决php生成文件名乱码问题的详细内容!
来源:php中文网
本文发布于:2023-02-25 00:51:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/167725747134108.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:互联网常识:如何解决php生成文件名乱码问题.doc
本文 PDF 下载地址:互联网常识:如何解决php生成文件名乱码问题.pdf
留言与评论(共有 0 条评论) |