Почему json_encode преобразует UTF-8 символы

199
23 июня 2021, 02:10

Столкнулся с любопытным вопросом. По умолчанию json_encode шифрует utf8 символы в \u* и чтобы это отключить необходимо использовать опцию JSON_UNESCAPED_UNICODE. Но почему это "экранирование" работает по умолчанию? Чему это помогает? И что правильнее делать для REST API для мобильных клиентов? Экранировать или нет?

Answer 1

JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The default encoding is UTF-8, and JSON texts that are encoded in UTF-8 are interoperable in the sense that they will be read successfully by the maximum number of implementations; there are many implementations that cannot successfully read texts in other encodings (such as UTF-16 and UTF-32).

Говорит нам стандарт RFC7159 8.1. UTF-8 кодировка максимально гибкая и имеет такое свойство как Interoperability, что означает максимально адаптирован к работе, что приводит к максимальному количеству реализаций(Implementations). Существует много разных реализаций, которые не могут успешно и правильно прочитать текст, отправляемый в JSON формате(Такие как UTF-16, UTF-32).

Простым языком, UTF-8 - в большинстве принята за кодировку, через которую могут общаться различные "объекты". Можно ее сравнить с английским языком. Это некий "интерациональный язык" общения, который можно использовать практически везде, и практически везде вас поймут и ответят на том же языке - в этом и заключается Interoperability.

READ ALSO
Cron не создаёт файл в каталоге

Cron не создаёт файл в каталоге

Выполняется файл php, в нем есть некий код и в конце он должен создать файл, но не создаёт, крон срабатывает и код выполняется но файл создать...

90
Упрощенные сокеты на yii2

Упрощенные сокеты на yii2

В общем, у меня есть написанная техподдержка на yii2, но я хочу обновлять её через сокеты, те

94
Как в цикле вывести разные классы ?(wordpress)

Как в цикле вывести разные классы ?(wordpress)

Суть в следующем, верстальщик сверстал иконки шаговМне нужно выводить это циклом

95