在 TYPO3 12 中,config.metaCharset 被删除,因此不再容易将 TYPO3 站点的输出编码为 iso-8859-1。 Breaking #97065 告诉我应该使用自定义中间件来自行编码输出。我熟悉其他主题中的中间件,但我不知道如何准确解决这个问题。
返回新的 HtmlResponse($content);应该可以将编码的内容返回给世界,但是我如何在中间件中获取实际页面的全部内容?
或者还有其他的可能吗?
任何帮助表示赞赏!
在一些评论的帮助下(非常感谢!!)我能够构建我的中间件:
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 启动流。我在核心的另一个中间件中发现了这个(压缩页面内容)。