РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
226 of 1361 menu

Метод setCharset

Метод setCharset принадлежит классу Response и устанавливает кодировку символов для тела ответа. Первым параметром передаётся строка с названием кодировки, например 'UTF-8'. Метод возвращает текущий объект Response, что позволяет выстраивать цепочку вызовов.

Кодировка влияет на заголовок Content-Type, который отправляется клиенту. По умолчанию Symfony использует 'UTF-8', поэтому менять её стоит только при работе с нестандартными кодировками, например 'ISO-8859-1' или 'Windows-1251'.

Если кодировка не задана явно, Symfony берёт значение из параметра charset конфигурации фреймворка.

Синтаксис

$response->setCharset(string $charset): static

Пример

Давайте создадим ответ и установим ему кодировку 'Windows-1251':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $response = new Response('abcde'); $response->setCharset('Windows-1251'); return $response; } } ?>

В результате в заголовке Content-Type будет указана кодировка 'Windows-1251':

Content-Type: text/html; charset=Windows-1251

Пример

Метод возвращает текущий объект, поэтому можно выстроить цепочку вызовов. Установим кодировку и сразу зададим тело ответа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { return (new Response()) ->setCharset('ISO-8859-1') ->setContent('hello'); } } ?>

Результат выполнения кода:

"hello"

Пример

Давайте создадим сервис, который формирует ответ с кодировкой, отличной от кодировки по умолчанию:

<?php namespace App\Service; use Symfony\Component\HttpFoundation\Response; class ResponseFactory { public function create(string $content): Response { $res = new Response($content); $res->setCharset('Windows-1251'); return $res; } } ?>

Теперь используем этот сервис в контроллере:

<?php namespace App\Controller; use App\Service\ResponseFactory; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(ResponseFactory $factory): Response { return $factory->create('article'); } } ?>

Результат выполнения кода:

"article"

Смотрите также

  • класс Response,
    который представляет HTTP-ответ
  • метод setContent,
    который задаёт тело ответа
  • метод getContent,
    который возвращает тело ответа
  • метод setStatusCode,
    который задаёт статус-код ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить