使用中间件将 TYPO3 12 Site 的输出编码为 iso-88591

问题描述 投票:0回答:1

在 TYPO3 12 中,config.metaCharset 被删除,因此不再容易将 TYPO3 站点的输出编码为 iso-8859-1。 Breaking #97065 告诉我应该使用自定义中间件来自行编码输出。我熟悉其他主题中的中间件,但我不知道如何准确解决这个问题。

返回新的 HtmlResponse($content);应该可以将编码的内容返回给世界,但是我如何在中间件中获取实际页面的全部内容?

或者还有其他的可能吗?

任何帮助表示赞赏!

typo3
1个回答
0
投票

在一些评论的帮助下(非常感谢!!)我能够构建我的中间件:

public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
    $response = $handler->handle($request);
    $response = $response->withHeader('Content-Type', 'text/html; charset=iso-8859-1');

    ob_start([__CLASS__, 'callback']);
    return $response;
}

/**
 * @param $buffer
 * @return array|string|string[]
 */
private function callback($buffer) {
    // evtl. weitere Konvertierungen
    $buffer = mb_convert_encoding($buffer, "iso-8859-1", "utf-8");
    $buffer = str_replace('charset=utf-8', 'charset=iso-8859-1',$buffer);
    return $buffer;
}

这里的神奇工具是使用 ob_start 启动流。我在核心的另一个中间件中发现了这个(压缩页面内容)。

© www.soinside.com 2019 - 2024. All rights reserved.