Я использую сценарий 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: //?
есть ли способ исправить это?
Ваш заголовок содержит множество
header('Content-Type: application/json; Charset=UTF-8');
а также
// кодируем ваши данные которые вы получаете с сервера
$json = utf8_encode($content);
$data = json_decode($content, true);
Других решений пока нет …