Laravel – Российские символы в выводе

Вопрос: У меня в таблице категорий есть следующее. Есть русские символы: id name 1 Обувь Обувь = Обувь Я хочу получить "Obuv" в качестве русской символики на выходе. echo Category::select('name')->first(); Этот скрипт должен дать мне "Обувь" в качестве выхода, но я получаю { "Имя": " u041eu0431u0443u0432u044c"} Что не так? Как я могу получить правильный результат?

Вопрос:

У меня в таблице категорий есть следующее. Есть русские символы:

id name 1 Обувь

Обувь = Обувь

Я хочу получить “Obuv” в качестве русской символики на выходе.

echo Category::select(‘name’)->first();

Этот скрипт должен дать мне “Обувь” в качестве выхода, но я получаю

{ “Имя”: “ u041eu0431u0443u0432u044c”}

Что не так? Как я могу получить правильный результат? Если я напишу “Obuv” в базе данных, английский “Obuv” даст мне правильный результат в Laravel. В phpMyAdmin это дает мне русские символы без проблем. Проблема в Ларавеле.

Лучший ответ:

Вы выводите данные, повторяя свою модель Category которая выводится в JSON по умолчанию в Laravel. Это автоматически вытесняет многобайтовые символы Unicode после вывода по умолчанию. Когда вы запускаете json_encode(), вы можете JSON_UNESCAPED_UNICODE параметр JSON_UNESCAPED_UNICODE следующим образом:

$data = Category::select(‘name’)->first(); echo json_encode($data, JSON_UNESCAPED_UNICODE);

Однако я должен быть ясен. В вашей Category нет сохраненных в нем данных, экранирование происходит только при выходе в JSON. Если все, что вы делали это гарантируя, что вы получили правильные данные обратно из базы данных с помощью echo – ING, вы должны быть в незашифрованном виде.

Если вы ищете только исходный текст свойства name категории, вы должны иметь возможность выводить его так:

echo $data->name;

Для получения дополнительной информации см. Http://php.net/manual/en/function.json-encode.php и https://laracasts.com/discuss/channels/laravel/how-to-prevent-laravel-from-returning – escaped-json-data.

Оцените статью
Добавить комментарий