«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему функция PHP json_encode преобразует строки UTF-8 в шестнадцатеричные объекты?

Почему функция PHP json_encode преобразует строки UTF-8 в шестнадцатеричные объекты?

Опубликовано 11 ноября 2024 г.
Просматривать:352

Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

Функция PHP json_encode преобразует строки UTF-8 в шестнадцатеричные объекты: почему и как это решить

Функция PHP json_encode может кодировать переменные PHP в JSON (нотация объектов JavaScript). Однако при работе с символами Юникода в кодировке UTF-8 функция по умолчанию может преобразовать их в шестнадцатеричные объекты. Это связано с тем, что JSON изначально не поддерживает символы UTF-8, которые представляют собой многобайтовые символы, представляющие символы, отличные от ASCII.

Почему PHP преобразует строки UTF-8 в шестнадцатеричные объекты?

Функция json_encode PHP использует спецификацию JSON, которая предписывает, что символы Юникода, не представленные как символы ASCII, должны быть закодированы с использованием шестнадцатеричных escape-последовательностей. Это обеспечивает совместимость со старыми приложениями и устройствами, которые могут не поддерживать UTF-8.

Решение проблемы преобразования

Чтобы решить эту проблему и избежать преобразования UTF-8 строк в шестнадцатеричные объекты, в PHP появилась опция JSON_UNESCAPED_UNICODE в версии 5.4.0. Этот параметр предписывает json_encode использовать кодовые точки Unicode вместо шестнадцатеричных escape-последовательностей для символов, отличных от ASCII.

Пример

Предположим, у вас есть следующий PHP-скрипт:

Этот код выведет следующую строку JSON, где символы кириллицы закодированы в шестнадцатеричном формате:

"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."

Чтобы напрямую вывести символы UTF-8, вы можете использовать параметр JSON_UNESCAPED_UNICODE:

Это создаст следующую строку JSON, в которой символы кириллицы представлены с использованием их кодовых точек Unicode:

"База данни грешка."
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3