From 77ab1e7f9f93f1274ee3ccc4f0d8a55360182f11 Mon Sep 17 00:00:00 2001 From: flashwave Date: Thu, 28 Mar 2024 22:35:49 +0000 Subject: [PATCH] Switch default charset to UTF-8 again. --- src/Http/Routing/HttpRouter.php | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Http/Routing/HttpRouter.php b/src/Http/Routing/HttpRouter.php index 9e28945..8b5a72d 100644 --- a/src/Http/Routing/HttpRouter.php +++ b/src/Http/Routing/HttpRouter.php @@ -22,18 +22,28 @@ class HttpRouter implements IRouter { private array $contentHandlers = []; + private string $defaultCharSet; + private IErrorHandler $errorHandler; public function __construct( + string $charSet = '', IErrorHandler|string $errorHandler = 'html', bool $registerDefaultContentHandlers = true, ) { + $this->defaultCharSet = $charSet; $this->setErrorHandler($errorHandler); if($registerDefaultContentHandlers) $this->registerDefaultContentHandlers(); } + public function getCharSet(): string { + if($this->defaultCharSet === '') + return strtolower(mb_preferred_mime_name(mb_internal_encoding())); + return $this->defaultCharSet; + } + public function getErrorHandler(): IErrorHandler { return $this->errorHandler; } @@ -191,14 +201,16 @@ class HttpRouter implements IRouter { $response->setContent(new StringContent($result)); if(!$response->hasContentType()) { - $charset = strtolower(mb_preferred_mime_name(mb_detect_encoding($result))); - if(strtolower(substr($result, 0, 14)) === 'setTypeHTML($charset); - elseif(strtolower(substr($result, 0, 5)) === 'setTypeXML($charset); - else - $response->setTypePlain($charset); + $response->setTypeHTML($this->getCharSet()); + else { + $charset = strtolower(mb_preferred_mime_name(mb_detect_encoding($result))); + + if(strtolower(substr($result, 0, 5)) === 'setTypeXML($charset); + else + $response->setTypePlain($charset); + } } } }