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")
,