Я столкнулся с интересным поведением в нативной реализации PHP 5 json_encode()
. Очевидно, что при сериализации объекта в строку json кодировщик обнуляет любые свойства, являющиеся строками, содержащими «фигурные» кавычки, которые могут быть скопированы из документов MS Word с включенным автоматическим преобразованием.
Это ожидаемое поведение функции? Что я могу сделать, чтобы заставить эти виды символов перейти к их основным эквивалентам? Я проверил несоответствия кодировки символов между базой данных, возвращающей данные, и страницей администрирования, которая вставляет их, и все настроено правильно - определенно кажется, что кодировщик просто отклоняет эти значения из-за этих символов. Кто-нибудь еще сталкивался с таким поведением?
EDIT:
уточнить;
MSWord возьмет стандартные кавычки и апострафы и преобразует их в более эстетичные «причудливые» или «фигурные» цитаты. Эти символы могут вызывать проблемы при размещении в менеджерах контента, у которых есть несоответствия кодировки между их интерфейсом редактирования (в html) и кодировкой базы данных.
Хотя проблема не в этом. Например, у меня есть json_object, представляющий профиль человека и строку:
Jim O’Shea
Код UTF для этого апострафа \u2019
Будет иметь значение null в объекте json при получении из базы данных и непосредственном json_encoded.
{"model_name":"Bio","logged":true,"BioID":"17","Name":null,"Body":"Profile stuff!","Image":"","Timestamp":"2011-09-23 11:15:24","CategoryID":"1"}