2009-03-26 10 views
3

クライアントに送るJson文字列を手動で作成しようとしました。Jsonリクエストのエンコーディングに関する問題

{'result':'hhh'} 

私は

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

を使用する場合それは完全に到着しました。 しかし、私は

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

を行うときには、2つの要求の間に、私が見つける唯一の違いは、最初のものは持っているということです

ではありません。

Content-Length: 9 header 

2つ目(いました

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()があなたのためにトランスコードするのに対し、違うエンコーディングスキームで何かをエコーし​​ているかのように聞こえます。

関連する問題