За последние 24 часа нас посетил 18661 программист и 1587 роботов. Сейчас ищут 1214 программистов ...

Совсем плохо с json_encode($data);

Тема в разделе "PHP для новичков", создана пользователем ajkpro, 23 апр 2024.

  1. ajkpro

    ajkpro Новичок

    С нами с:
    23 апр 2024
    Сообщения:
    1
    Симпатии:
    0
    Получаю данные с сайта в формате:
    Код (Text):
    1. fetch(theUrl, {
    2.     method: 'POST',
    3.     body: JSON.stringify(formData),
    4.     headers: {
    5.         'Content-Type': 'application/json'
    6.     }
    7. })
    Преобразую:
    Код (Text):
    1. $data = json_decode(file_get_contents('php://input'), true);
    2. $json_out = json_encode($data);
    И в $json_out получаю;
    Код (Text):
    1. {"consumer":"\u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c", ...
    В то же время командой:
    Код (Text):
    1.  $consumer = $data['consumer'];
    получаю нормальный текст utf-8

    Я что-то не понимаю?
    Прошу помощи!

    Спасибо!
    Александр
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.579
    Симпатии:
    1.760
    Так и должно быть. json_encode эскейпит юникод-символы. Можно отменить, но большого смысла нету. Большинство систем, в том числе браузеры, понимают такие JSON-ы верно, и при декодировании вернуться символы.

    https://www.php.net/manual/en/json.constants.php#constant.json-unescaped-unicode
     
  3. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день, Александр!
    Я не понял зачем нужен json_encode.
    json_decode
    возвращает ассоциативный массив $data
    Если убрать следующую строку, эта команда получит $consumer из этого массива.
    PHP:
    1.  $consumer = $data['consumer'];
    Удачи!