在Apache中动态地将生成的UTF-8内容转换为ISO 8859-1


Convert generated UTF-8 content to ISO 8859-1 on the fly in Apache

我们有一个PHP应用程序在Apache上运行,它生成要用Excel打开的CSV文件;内容用UTF-8编码。然而,Excel存在一个问题,它不识别字符编码并显示令人讨厌的'ö'而不是'ö',例如,如本问题所述。

现在,由于不可能将Excel配置为正确识别UTF-8编码,并且通过"外部数据导入"打开文件,如本答案中所述,对我们来说是不可接受的,我想也许可以配置Apache使用某种过滤器将UTF-8编码响应转换为ISO 8859-1 ?在这种情况下,我不需要更改任何PHP脚本—它们将继续生成UTF-8编码的内容—我只需要配置Apache将其中一些脚本的输出动态地转换为ISO 8859-1,以便可以使用Excel轻松打开生成的文件。

实际上是这样解决的:

# beginning of file
function encode($buffer) {
    return iconv("UTF-8", "ISO-8859-1", $buffer);
}
ob_start("encode");
# content generated here
ob_end_flush();
# end of file