• 解决PHP在IE浏览旗下载文件,中文文件名乱码问题


    今天商服提出一个问题:“使用360浏览器导出 已发货的订单 出现文件名称乱码”.

    问题人家已经提出来了。解决。

    前提:我们网站所有文件全部使用的是UTF-8 NO BOM的编码方式

    1、找测试重现。360浏览器下载的呵呵,果然文件名是乱码。再请测试在ie浏览器下测试。IE9,8,7也全部是乱码。查看编码就是UTF-8.所名不是编码问题造成的。使用firefox8 测试很正常。猜想是因为ie的某些特殊的设置导致的问题。

    2、以"PHP ie 下载 文件名乱码"为关键字搜索。果然,ie对中文文件名的下载文件是需要特殊处理的。

    3、网上一哥们如是说:

    如果$file_name是UTF-8编码的,比如文件名为测试.html;
    ie这时就搞些小情绪,文件名变成了乱码了

    在RFC2231的定义里面, 多语言编码的Content-Disposition应该这么定义:
    Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html"
    即:
    filename后面的等号之前要加 *
    filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。
    所以这时应该对文件名进行url编码转换 ,使用php的urlencode很轻松就搞定了

    因此,以上代码应该加上url编码转换

    $file_name = urlencode($file_name); 

    查找代码,找到文件名的地方,判断如果是ie 就对文件名称进行urlencode.

    提交,测试。ok。问题解决。再次,多谢网友的无私奉献。

    参考:

    http://xiaoyangok.iteye.com/blog/839814

    http://www.jb51.net/article/27100.htm

    http://www.oschina.net/code/snippet_12_583?from=rss 

  • 相关阅读:
    架构师维度理解 程序=数据+算法
    vuejs 中 select 动态填充数据,后台的数据
    vuejs 的错误代码,有助于理解
    graphviz 绘制架构图
    graphviz 布局和子图,表格教程
    graphviz layer 教程(非布局)
    待学习
    Linux进程管理
    TCP连接的11种状态,三次握手四次挥手原因
    Linux基本命令使用(三)
  • 原文地址:https://www.cnblogs.com/ainiaa/p/2258519.html
Copyright © 2020-2023  润新知