php://输入通过POST检索带有希伯来语的JSON,返回问号

时间:2015-05-06 09:01:13

标签: php json post php-stream-wrappers

我正在使用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中被收到为问号(?????)(I通过十六进制编辑器检查check.log。它们是问号.0x3F),所以收到的“check.log”文件如下所示:

{var:"?????",var2:"??????",..}

如果它对任何人都有帮助,我正在使用Apache 2.2.3服务器和PHP 5。

这是PHP的内部编码设置为php://输入包装器的问题吗?

无论如何要解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的标题包含集

header('Content-Type: application/json; Charset=UTF-8');

//编码从服务器

收到的数据
$json = utf8_encode($content);
$data = json_decode($content, true);