json_decode не работает без utf8_encode

Я получаю utf8-json-String из java как переменную post в мой php-файл.

мой php-заголовок установлен как charset=utf-8, html charset=utf-8, а php-файл - utf8 без спецификации.

Я пытаюсь записать данные JSON в базу данных TSQL.

Если я сделаю

$jsonfile = $_POST['jsonfile'];
$jsonfile = utf8_decode($jsonfile); 
$jsonarray = json_decode($jsonfile);
foreach($jsonarray as $value)   {
// write in database
}

все данные записаны в моей базе данных. К сожалению, кодировка удаляет немецкие символы, такие как ß (ß).

если я сделаю только

$jsonfile = $_POST['jsonfile'];
$jsonarray = json_decode($jsonfile);
foreach($jsonarray as $value)   {
// write in database
}

PHP не запускается через массив.

1 ответ

(Я предполагаю, что вы также пишете Java-клиент.)

Отправить запрос POST как Content-type: application/json и JSON в качестве полезной нагрузки запроса, а не отправлять его как application/x-www-form-urlencoded с ломоть JSON в поле формы.

Вы можете прочитать полное содержимое полезной нагрузки в PHP с file_get_contents("php://input"),

Другие вопросы по тегам