Je rencontre des problèmes avec JsonResponse sur Debian Stable php5 (5.4.39-0 + deb7u1) lorsque je renvoie des caractères UTF8.Problèmes d'encodage Symfony2 JsonResponse utf8 sur Debian Stable php-5.4
J'ai développé une application sur Debian Testing php5 (5.6.6 + dfsg-2) et le code suivant a fonctionné comme un charme:
$response = new JsonResponse();
$response->headers->set('Content-Type', 'application/json');
$response->setData($data);
return $response;
mais après déploiement sur le serveur de prod stable j'ai commencé à la suite exception pour exactement le même DB/charsets données etc:
request.CRITICAL: Uncaught PHP Exception InvalidArgumentException: "Malformed UTF-8 characters,
possibly incorrectly encoded." at /site/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/JsonResponse.php
line 123 {"exception":"[object] (InvalidArgumentException(code: 0):
Malformed UTF-8 characters, possibly incorrectly encoded. at
/site/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/JsonResponse.php:123)"} []
La réponse de DB qui est transmis sous forme de données $ DO contient les caractères UTF8 que je ne peux pas contrôler. Je dois juste les montrer.
Je suppose que j'ai atteint un bug de 5.4, mais comment puis-je facilement le contourner? Je ne ai essayé:
$response = new JsonResponse();
$response->headers->set('Content-Type', 'application/json');
$response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
$response->setData($data);
return $response;
mais je reçois la même erreur.
Des idées?
Je ne sais vraiment pas si je reçois un UTF8 valide. Les données d'entrée proviennent de sources externes (e-mails) et je dois simplement les afficher. Je ne peux pas le reformater, donc je devrais y échapper d'une manière ou d'une autre. –