«Недовольные символы UTF-8, возможно, неправильно закодированные» в Laravel

Я использую Laravel (фреймворк) для записи службы для мобильных устройств и данных, возвращаемых в формате JSON . В результате данных есть несколько полей, закодированных в UTF-8 .

Следующее утверждение

 return JsonResponse::create($data); 

возвращает ошибку ниже

 InvalidArgumentException HELP Malformed UTF-8 characters, possibly incorrectly encoded Open: /var/www/html/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/JsonResponse.php } catch (\Exception $exception) { restore_error_handler(); throw $exception; } if (JSON_ERROR_NONE !== json_last_error()) { throw new \InvalidArgumentException($this->transformJsonError()); } 

Я изменился:

 return JsonResponse::create($data); 

в

 return JsonResponse::create($data, 200, array('Content-Type'=>'application/json; charset=utf-8' )); 

но он все еще не работает.

Как я могу это исправить?

Я написал этот метод для обработки массивов UTF8 и JSON. Он отлично работает с массивом (простым и многомерным).

 /** * Encode array from latin1 to utf8 recursively * @param $dat * @return array|string */ public static function convert_from_latin1_to_utf8_recursively($dat) { if (is_string($dat)) return utf8_encode($dat); if (!is_array($dat)) return $dat; $ret = array(); foreach ($dat as $i => $d) $ret[$i] = self::convert_from_latin1_to_utf8_recursively($d); return $ret; } // Sample use // Just pass your array or string and the UTF8 encode will be fixed $data = convert_from_latin1_to_utf8_recursively($data); 

В моем случае это вызывает ошибку:

 return response->json(["message" => "Model status successfully updated!", "data" => $model], 200); 

но это не так:

 return response->json(["message" => "Model status successfully updated!", "data" => $model->toJson()], 200);