• 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来标记文本文件的编码方式的。

  • 相关阅读:
    MySQL系列(二)
    MySQL系列(一)
    RabbitMQ的安装部署
    RabbitMQ原理介绍
    消息中间件metaq
    消息中间件之zookper安装部署
    ZooKeeper基本原理
    消息中间件剖析
    了解Node.js
    windows下使用Git
  • 原文地址:https://www.cnblogs.com/liucaodan/p/7685666.html
Copyright © 2020-2023  润新知