0

我有一个在 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 停止使用这些德语字符以及我可以做些什么来正确书写?

4

1 回答 1

0

encoding - 将 utf8 字符转换为 iso-88591 并返回 PHP

打开上面的链接会很有帮助。

utf8_decode — 将使用 UTF-8 编码的 ISO-8859-1 字符的字符串转换为单字节 ISO-8859-1

utf8_encode — 将 ISO-8859-1 字符串编码为 UTF-8

于 2018-08-12T08:15:49.310 回答