En utilisant le client HTTP Guzzle en PHP, je me suis aperçu que parfois le retour d'une requête GET n'est pas encodé en UTF-8. Et ça semble dépendre de l'environnement. Dans mon cas ça ne marchait pas en local mais sur le serveur oui. Et si vous vous contentez simplement de ne pas en tenir compte et d'ajouter utf8_encode
sur la payload de la réponse, ça donne des choses bizarre.
Du coup voici une vérification que vous pouvez faire :
$body = (string) $res->getBody();
if (!preg_match('!!u', $body)) {
$body = utf8_encode($body);
}