1

phpコードは次のとおりです。

$str='{"key":"'.chr(1).'"}';
$json=json_decode($str);

json_decode は null を返します。では、デコードするには $str をどのように処理すればよいでしょうか。(PS $str は単なる例です。chr(2)、chr(10) などが含まれる場合があります)。

4

2 に答える 2

3

U + 0020-U + 0021、U + 0023-U + 005B、U + 005D-U + 10FFFFの範囲の文字のみが、文字列でエスケープされていない状態で表示される場合があります。その他の文字は、Unicodeエスケープシーケンスを使用してエスケープする必要があります。あなたの場合は\u0001代わりに使用してください。

于 2012-11-27T06:21:42.550 に答える
1

Gumbo が指摘しているように、有効な JSON を生成していません。これを行う必要がある場合(理由がわからない場合、例は基本的な操作なしです)、次を使用しますjson_encode()

$str = '{"key":'.json_encode(chr(1).chr(2)).'}';
$json = json_decode($str);

これにより、有効な JSON が作成されます。

{"key":"\u0001\u0002"}

そして正しくデコードします。

于 2012-11-27T06:36:22.030 に答える