2009-03-26 9 views
3

Json 문자열을 수동으로 작성하여 클라이언트에 보내려고합니다.Json 요청 인코딩 문제

{'result':'hhh'} 

내가

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

를 사용하는 경우 그것은 완벽 도착한다. (않는

Content-Length: 9 header 

와 두 번째를 : 나는

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

을 수행 할 때 는하지만 내가 두 요청 사이에서 찾을 수있는 유일한 차이는 첫 번째가 가지고 있다는 것입니다

아니다 작동하지 않음)

Content-Length: 16 header 

문자열의 길이는 모두 16이어야합니다. 나는 ZF와 Mootools의 조합과 관련이 있다고 생각합니다.

답변

2

스펙에 따르면 JSON은 키 이름과 문자열 값을 큰 따옴표로 묶어야합니다.

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

출력 "16"

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

가 출력

{"result":"hhh"} 

이 출력의 길이는 다음과 같이하여 16 바이트이다.

사양을 따르는 JSON 디코더가 수동으로 에코 된 JSON과 함께 제공되면 예외가 발생하거나 예외가 발생합니다.

+0

수동으로 문자열에있는 문자를 계산하면 문제가 완전히 다른 것입니다. 더 자세히 조사 할 필요가 있습니다. ZF와 Mootools의 조합과 관련이 있습니다. –

+0

Elmo가 정확한 테스트를 거쳤습니다. 큰 따옴표를 사용해야하는데, 아무 것도 반환하지 않는 작은 따옴표를 디코딩하려고 할 때 오류가 발생하지는 않습니다. –

1

(UTF-8 포함)은 표준 인코딩이므로 UTF-8과 함께 사용하면 문제가 발생하지 않습니다. json_encode()가 코드 변환을하는 반면, 다른 인코딩 체계에서 뭔가를 반향하는 것처럼 들립니다.