2009-03-26 2 views
3

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

{'result':'hhh'} 

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

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

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

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

Это не

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

Content-Length: 9 header 

, а второй (который делает не работает)

Content-Length: 16 header 

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

ответ

2

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

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

выведет

{"result":"hhh"} 

Длина этого выхода составляет 16 байт, как показано в следующем:

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

выходы "16".

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

+0

Если вы будете считать символы на моей ручной строке, вы увидите, что проблема - это нечто иное. Мне нужно больше исследовать, кажется, что-то связано с комбинацией ZF и Mootools. –

+0

Просто несколько тестов и Elmo верны. Вы должны использовать двойные кавычки, хотя я не получил ошибку, пытаясь декодировать одинарные кавычки, которые ничего не возвращали. –

1

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

Смежные вопросы