Проблемы с кодировкой JSON-запроса - PullRequest
3 голосов
/ 26 марта 2009

Я пытаюсь вручную создать строку Json для отправки клиенту.

{'result':'hhh'} 

Когда я использую

echo json_encode(array('result'=>'hhh'));

Это прибывает отлично. Но когда я делаю

echo "{'result':'hhh'}";

Это не

Единственное различие, которое я нахожу между двумя запросами, заключается в том, что первый запрос имеет:

Content-Length: 9    header

и второй (который не работает)

Content-Length: 16   header

Обе строки должны иметь длину содержимого: 16 !!! Я думаю, это как-то связано с комбинацией ZF и Mootools.

Ответы [ 2 ]

2 голосов
/ 26 марта 2009

Согласно спецификации, JSON требует двойных кавычек вокруг имен ключей и строковых значений.

echo json_encode(array('result'=>'hhh'));

выдаст

{"result":"hhh"}

Длина этого вывода составляет 16 байтов, как показано ниже:

echo strlen(json_encode(array('result'=>'hhh')));

выводит "16".

Любой JSON-декодер, который следует спецификациям, потерпит неудачу или выдаст исключение при представлении с вашим JSON, который отображается вручную.

1 голос
/ 26 марта 2009

У него нет проблем с UTF-8, поскольку UTF-8 является стандартной кодировкой для него. Звучит так, как будто вы повторяете что-то в другой схеме кодирования, что ломается, тогда как json_encode () перекодирует это для вас.

...