我有两个正在开发的网站(在 PHP 中)。他们使用相同的代码来提供 XLS 导出(使用 PEAR excel),并且它们在同一本地服务器上运行。为了排除 xls 中实际数据的问题,我现在只是输出一个没有数据的文件。
当我从站点 A 导出并保存文件时,它报告为在 Notepad++ 中编码的“ANSI”。此文件在 Excel 中正确打开。
当我从站点 B 导出时,该文件被报告为“UTF-8”编码,该文件不会在 Excel 中打开。如果我在 Textpad++ 中将文件转换为没有 BOM 的 ANSI 或 UTF-8,它在 Excel 中打开得很好。
当我在站点上保存任意页面时,站点 A 和 B 之间存在相同的编码差异,因此我认为它可能比生成 Excel 文件的方式更基本(导出 CSV/ODS 格式时的编码相同)。我在导出过程中比较了站点 A 和 B 之间的 http 标头,它们在功能上是相同的。将 Charset=ISO-8859-1 显式添加到标头没有任何区别。站点之间的 apache 虚拟主机在功能上也是相同的。两个站点都在其数据库中使用相同的字符编码(但由于我现在没有导出任何数据,这无关紧要)。
还有什么可能导致我没有考虑到这一点?
谢谢!
更新
excel 一代是一个红鲱鱼,我已经删除了所有这些,只是输出了下载标题和一个测试字符串。保存后,文件在站点之间的编码仍然不同。当我比较各种文件时,生成下载文件的代码似乎相同......
我无法通过创建一个简化的测试用例来重复这个问题。当我尝试时,两个站点都输出保存为 ANSI 的文件——我不明白还会发生什么。