Недопустимая последовательность UTF-8 в аргументе с Laravel

У меня проблема с кодировкой кодировки, дело в том, что когда я тестирую свой сайт на локальном компьютере (MAMP PHP 5.5.3), все работает нормально, мой объект JSON возвращается без проблем. Но в prod с сервером, размещенным на DreamHost (PHP 5.4), он не работает и выдает мне эту ошибку

json_encode(): недопустимая последовательность UTF-8 в аргументе.

(Это ошибка, вызванная Laravel в файле JsonResponse.php методом setData).

Итак, как может быть ошибка на моем онлайн-сервере, а не на моем локальном?

ИЗМЕНИТЬ:

Это мой заголовок ответа:

Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1371
Content-Type:text/html; charset=UTF-8
Date:Thu, 02 Oct 2014 11:56:30 GMT
Expires:Thu, 02 Oct 2014 11:56:31 GMT
Keep-Alive:timeout=2, max=100
Server:Apache
Vary:Accept-Encoding,User-Agent

должно быть : Content-Type:application/json; charset=utf-8 ?

Но я не могу переопределить заголовок. Это не работает:

$response->header('Content-Type', 'application/json');
$response->header('charset', 'utf-8');

person KeizerBridge    schedule 02.09.2014    source источник
comment
Вы хотите, чтобы мы просто догадались, в чем проблема? Покажи код.   -  person l'L'l    schedule 02.09.2014
comment
На самом деле, единственное, что я хочу знать, это почему на моем онлайн-сервере есть проблема с кодировкой, а не на моем локальном.   -  person KeizerBridge    schedule 02.09.2014
comment
Конфигурация идентична? Что-то должно быть другим.   -  person l'L'l    schedule 02.09.2014
comment
Можете ли вы var_dump() что вы пытаетесь закодировать с помощью ::setData()?   -  person Sam    schedule 01.10.2014
comment
Дело в том, что мой объект содержит французскую строку, поэтому есть некоторые акценты. Я могу решить проблему с помощью рекурсивной функции, применяющей utf8_encode к каждому строковому значению, но она преобразует некоторые символы, например, é становится A©. Не знаю почему. И я не могу получить доступ к моей конфигурации apache/php на моем сервере DreamHost.   -  person KeizerBridge    schedule 02.10.2014
comment
Откуда берется строка, которую вы хотите закодировать?   -  person robinef    schedule 02.10.2014
comment
Моя база данных и моя база данных находятся в utf8_unicode_ci, как и мои таблицы и столбцы.   -  person KeizerBridge    schedule 02.10.2014


Ответы (1)


У меня было setLocale('fr_FR') теперь у меня setLocale('fr_FR.UTF8') и это решает проблему!

Laravel больше не выдает никаких ошибок, используя json_encode() для любого запроса AJAX. моя функция strftime возвращает правильные символы для каждой буквы с акцентом.

person KeizerBridge    schedule 04.10.2014