我有一个在 PHP 7.0.22 上运行的 wordpress 4.9.8 网站。该网站使用 UTF-8。我需要将 ISO 8859-1 中的订单数据输出到我们的履行提供商的 FTP 服务器。在用 fputs() 写入数据之前,我已经用 utf8_decode() 转换了数据。这一切工作正常。
但是突然间 - 我相信在 wordpress 更新后 - 如果数据包含德语变音符号,fputs 将不再工作。例如,如果数据中有一个“Ä”,在字符串中编码为 0xC4,则 fputs 不会向文件写入任何内容,因此不会导出数据。
在我看来,在 fputs 或下面的某个地方或系统中,检查字符串中的所有字符是否都是有效字符,如果包含 ISO 8859-1 字符,则该函数被中止。
这是我的代码的摘录:
$stream = fopen( 'php://output', 'w' );
fputs( $stream, $header ); // working well
$mytext = $this->get_row_csv( $row, $headers ); // get the order data
$mytext1 = utf8_decode($mytext); // convert to ISO 8859-1
fputs( $stream, $mytext1 ); // OK with no umlaut, fails if umlaut is included
有没有人知道,wordpress 发生了什么变化,或者为什么 fputs 停止使用这些德语字符以及我可以做些什么来正确书写?