zoukankan      html  css  js  c++  java
  • PHP 导出office打开乱码

    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);

    中文显示乱码的解决方法

    如果是文件名乱码,试试下面的:
    string httpHeader="attachment;filename="+HttpUtility.UrlEncode(strFileName+".xls");
    Response.AppendHeader("Content-Disposition", httpHeader);
    如果是文件内容乱码,试试下面的:
    Response.ContentEncoding=System.Text.Encoding.Default;

    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

    最直接的方法,添加BOM

     //Windows下使用BOM来标记文本文件的编码方式
     fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));

    补充:

    什么是BOM

    在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
    UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
    Windows就是使用BOM来标记文本文件的编码方式的。

  • 相关阅读:
    php 接收表单 方法的区别
    php上传图片---初级版
    php 验证格式的函数总结
    行为类模式分析
    深入理解java虚拟机
    JVM生产环境参数实例及分析
    redis 排序(转)
    八种常用的排序算法(转)
    CAS原理分析
    Redis使用总结之与Memcached异同(转)
  • 原文地址:https://www.cnblogs.com/liucaodan/p/7685666.html
Copyright © 2011-2022 走看看