XLSX 文件是否按定义采用 UTF-8 编码?

Are XLSX files UTF-8 encoded by definition?

我正在尝试使用 PHP 读取 XLSX 文件。确切地说,使用 gneustaetter/XLSXReader。然而,这些 XLSX 文件是由不同的公司使用不同的软件生成的。所以我想检查它们是否有正确的编码并且总是只找到 UTF-8。

所以我的问题如上: XLSX 文件是否按定义采用 UTF-8 编码?或者是否存在可能破坏我正在处理的导入脚本的异常情况?

假设它始终是 UTF-8 是有风险的。我只是将您的期望重点放在 XML 在 XML header 中描述的内容上。根据我的经验,Windows-1252 编码数据总是在您最不希望出现的时候出现。您可以更仔细地查看 XLSX specification 以了解更多信息。

这是一个Chromium bug relating to a Windows-1252 encoded XLSX file,所以这些似乎存在于野外。也许它们是由 Microsoft Office 以外的程序生成的。随着 LibreOffice 之类的东西变得越来越流行,可能没有最强大的 XLSX 支持的旧版本可能最终会与您的代码进行交互。您可能不希望在您的代码中出现这样的错误。

除非您有拒绝无效编码的具体理由,否则请尽量通融。 JSON,严格定义,是UTF-8。根据定义,XLSX 似乎是 XML,但编码并没有确定下来。 UTF-8 似乎只是默认约定。