我正在使用 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 中作为问号 (?????) 接收(我已经检查过.log 通过十六进制编辑器。它们是问号。0x3F),因此收到的“check.log”文件如下所示:
{var:"?????",var2:"??????",..}
如果它对任何人有帮助,我正在使用带有 PHP 5 的 Apache 2.2.3 服务器。
这是为 php://input 包装器设置的 PHP 内部编码的问题吗?
有没有什么办法解决这一问题?