广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php 文件下载文件名乱码怎么办
  • 525
分享到

php 文件下载文件名乱码怎么办

2024-04-02 19:04:59 525人浏览 独家记忆
摘要

本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 文件下载文件名乱码怎么办php下载文件名解决乱码通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作

教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。

php 文件下载文件名乱码怎么办

php下载文件名解决乱码

通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载,相信这个大家都会。那么用Content-Disposition设置下载的文件名,这个也有不少人知道吧。基本上,下载程序都是这么写的:

代码如下:

$filename = "document.txt";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);
print "Hello!";

这样用浏览器打开之后,就可以下载document.txt。

但是,如果$filename是UTF-8编码的,有些浏览器就无法正常处理了。比如把上面那个程序稍稍改一下:

代码如下:

$filename = "中文 文件名.txt";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename);
print "Hello!";

把程序保存成UTF-8编码再访问,IE6下载的文件名就会乱码。 FF3下下载的文件名就只有“中文”两个字。Opera 9下一切正常。

输出的header实际上是这样子:

Content-Disposition: attachment; filename=中文 文件名.txt其实按照RFC2231的定义,多语言编码的Content-Disposition应该这么定义:

代码如下:

Content-Disposition: attachment; filename*="utf8''%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D.txt"

即:

filename后面的等号之前要加 *

filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。

最好加上双引号,否则文件名中空格后面的部分在Firefox中显示不出来

注意urlencode的结果与php的urlencode函数结果不太相同,php的urlencode会把空格替换成+,而这里需要替换成%20

经过试验,发现几种主流浏览器的支持情况如下:

IE6 attachment; filename=""
FF3 attachment; filename="UTF-8文件名"
attachment; filename*="utf8''"
O9 attachment; filename="UTF-8文件名"

Safari3(Win) 貌似不支持?上述方法都不行

这样看来,程序必须得这样写才能支持所有主流浏览器:

代码如下:

$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';
?>

以上就是php 文件下载文件名乱码怎么办的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php 文件下载文件名乱码怎么办

本文链接: https://www.lsjlt.com/news/99230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php 文件下载文件名乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 文件下载文件名乱码怎么办PHP下载文件名解决乱码通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作...
    99+
    2022-10-21
  • php Edge下载文件名乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php Edge下载文件名乱码怎么办?解决乱码方法一  1、首先按组合键“WIN+R”打开运行窗口,输入“gpedit.msc”并回车;  2、打开本地组策略编辑器后...
    99+
    2022-11-09
  • Linux下中文文件名乱码怎么办
    本篇内容介绍了“Linux下中文文件名乱码怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1)先下载并安装两个语言包:fonts-chi...
    99+
    2023-06-27
  • java文件下载中文文件名乱码
    JAVA文件下载时中文文件名乱码有两种情况:下载时中文文件名乱码;下载时因为路径中包含中文文件名乱码,提示找不到文件。相关视频教程分享:java视频教程解决方法如下:response.setContentType("multipart/fo...
    99+
    2021-10-07
    java教程 java 文件 下载 中文 文件名 乱码
  • java下载文件中文文件名乱码
    问题引出:上传中文命名的图片,下载显示不了中文名称。如图:(相关视频教程推荐:java视频教程)解决方法:sping-mvc.xml部分代码: FileController.java中文文件名获取代码:获取浏...
    99+
    2014-05-25
    java教程 java 下载 文件 中文 文件名 乱码
  • java下载文件时文件名乱码
    Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。String fileName = "测试文件.doc"; try { HttpServletResponse response = ...
    99+
    2021-08-15
    java 下载 文件 乱码
  • php文件下载文件名乱码如何解决
    本篇内容主要讲解“php文件下载文件名乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php文件下载文件名乱码如何解决”吧!php文件下载文件名乱码的解决办法:1、把“Content-...
    99+
    2023-07-04
  • php压缩中文文件名乱码怎么办
    这篇文章给大家分享的是有关php压缩中文文件名乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php压缩中文文件名乱码的解决办法:首先将中文压缩包名用iconv函数转码;然后通过ZipArchive的对象...
    99+
    2023-06-15
  • php目录文件名中文乱码怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php目录文件名中文乱码怎么办?php读取目录中文文件名乱码解决方法:最近项目需要,读取指定文件夹下中文word文件,生成文件名列表。直接读取会乱码,文件名表名问题。解决...
    99+
    2019-12-23
    php
  • java下载文件名乱码怎么解决
    Java下载文件名乱码的问题通常是由于编码不一致导致的。可以尝试以下几种方法解决:1. 设置HttpServletResponse的...
    99+
    2023-05-21
    java下载文件 java
  • java下载文件的文件名乱码问题
    java下载文件时文件名出现乱码的解决办法: String userAgent = request.getHeader("User-Agent"); String formFileName = file.getFileNa...
    99+
    2017-09-01
    java
  • php 新建文件名称乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 新建文件名称乱码怎么办?在windows下,PHP调用mkdir()、file_put_contents()、fopen()函数创建带有中文的目录或文档名时,...
    99+
    2022-11-04
  • java下载文件文件名乱码解决方法
    在进行文件下载的时候出现中文名称乱码,显示不出来:response.setHeader(“Content-Disposition”, “filename=自定义的名称.jpg” )解决办法对中文名称进行编码处理:String fileNam...
    99+
    2016-09-26
    java 乱码
  • java下载文件名中文乱码解决
    在Java的web开发中,文件下载功能的文件名文件名乱码问题是经常遇到的。对于这个问题,不同的浏览器,解决的方法不太一样。IE的话,通过URLEncoder对filename进行UTF8编码。而其他的浏览器(firefox、chrome、s...
    99+
    2017-06-24
    java
  • win10浏览器下载文件乱码怎么办
    这篇文章主要介绍win10浏览器下载文件乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!按win+R组合快捷键,打开运行窗口,输入“gpedit.msc”,回车确认。在本地组策略编辑器窗口中,依次点击展开“计...
    99+
    2023-06-28
  • php Edge下载文件名乱码如何解决
    本篇内容介绍了“php Edge下载文件名乱码如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php Edge下载文件名乱码的解决办法...
    99+
    2023-07-04
  • Java下载excel文件名中文乱码解决
    我是一名充满激情的程序员,💻希望和大家一起学习进步!我热爱编程,对技术充满好奇心和求知欲! 🗣️无论你是新手还是老手,都能从我的博客中获得有价值的内容! Ὠ...
    99+
    2023-09-10
    java excel python spring
  • java中文件下载及文件名乱码问题总结
    关于java文件下载文件名乱码问题解决方案:(相关学习课程:java视频教程)String fileName = "下载的文件名"; String userAgent = request.getHeader("User-Agent"); ...
    99+
    2021-10-03
    java 文件 乱码
  • Java下载文件,中文文件名乱码问题解决(文件名包含很多%)
    一般情况下,大家都是这样: fileName = URLEncoder.encode(fileName, "UTF-8");response.reset();response.setHeader("Content-disposition",...
    99+
    2023-09-02
    java 前端
  • php压缩文件时文件夹乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php压缩文件时文件夹乱码怎么办?解决PHP PclZip 中文乱码问题在使用 Pclzip 时出现无法压缩/解压文件的现象,追踪错误信息发现无法打开文件/目录,但是...
    99+
    2022-10-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作