PHP スクリプトを使用して、POST 経由で送信された JSON オブジェクトを取得しています。
JSON POST リクエストは基本的に次のようになります。
POST /script.php HTTP/1.1
Host: xx.xx.xx.xx
Content-Type: application/json
Content-Length: xx
Connection: keep-alive
{var:"value", var2:"value2", etc..}
PHP サーバー側のコードは次のようになります。
$content = file_get_contents('php://input');
file_put_contents("check.log", $content);
$data = json_decode($content, true);
受信したコンテンツをファイル (check.log) に保存して、受信した生の入力をそのまま調べることができるようにしたいと考えています。
私の問題は、JSON の "value"、"value2" などの場所にヘブライ文字が含まれている場合、保存されたファイル check.log で疑問符 (?????) として受信されることです (checkd check を確認しました.log を 16 進エディタで出力します。それらは疑問符です。0x3F)、受信した「check.log」ファイルは次のようになります。
{var:"?????",var2:"??????",..}
それが誰かを助けるなら、私はPHP 5でApache 2.2.3サーバーを使用しています。
これは、PHP の内部エンコーディングが php://input ラッパーに設定されていることに問題がありますか?
とにかくこれを修正する方法はありますか?