Wątek przeniesiony 2021-04-30 11:09 z Webmastering przez Patryk27.

Definiowanie kodowania odpowiedzi/pliku.

0

Witam.

Jak w Symfony mogę ustawić kodowanie odpowiedzi/pliku?

Mam coś takiego:

$response = new Response($content);
$response->setCharset('ISO-8859-2');
$response->headers->set('Content-Encoding', 'ISO-8859-2');
$response->headers->set('Content-Type', 'text/csv; charset=ISO-8859-2');
$response->headers->set('Content-Disposition', 'attachment; filename="exportfile');
$response->headers->set('Filename', 'exportfile');

return $response;

Jednak zwracany plik jest ciągle w UTF-8.

Wyczytałem, że należy dodać na koniec

$response->prepare();

ale u mnie kończy się to błędem:

Type error: Too few arguments to function Symfony\Component\HttpFoundation\Response::prepare(), 0 passed in /var/www/SaveFile.php on line 90 and exactly 1 expected

Natomiast gdy zrobię tak jak piszą w dokumentacji tj.

$response->prepare($request);

To błędu nie ma, ale plik jest nadal w UTF-8.

Z góry dziękuję za pomoc.

2

setCharset() itd. jedynie informują przeglądarkę czego ma się spodziewać - nie powodują automatycznej konwersji ciągów znaków na dany format.

(wizualnie: Content-Type: Japanese informuje przeglądarkę, że ma spodziewać się tekstu po japońsku, ale to na Tobie spodziewa odpowiedzialność, aby przypadkiem nie zrobić new Response('hello world!').)

Aby przekonwertować tekst z UTF8 na inny format, możesz wykorzystać funkcję iconv:

$content = iconv('UTF8', 'ISO-8859-2', $content);

$response = new Response($content);
$response->setCharset('ISO-8859-2');
/* ... */
0

Dziękuję.

iconv działa jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1