php://input извлекает JSON с иврита через POST, возвращает вопросительные знаки

Я использую сценарий PHP для получения объекта JSON, отправленного через POST.

Запрос 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 содержит символы иврита в местах "значения","значения2" и т. Д., Они получаются в виде вопросительных знаков (?????) в сохраненном файле check.log (у меня есть checkd check.log через шестнадцатеричный редактор. Это вопросительные знаки. 0x3F), поэтому полученный файл "check.log" выглядит так:

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

если это кому-нибудь поможет, я использую сервер Apache 2.2.3 с PHP 5.

это проблема с внутренней кодировкой PHP, установленной для оболочки ввода php://?

есть ли способ исправить это?

1 ответ

Ваш заголовок содержит множество

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

а также

// кодируем ваши данные которые вы получаете с сервера

$json = utf8_encode($content);
$data = json_decode($content, true);
Другие вопросы по тегам