2013-10-09 1 views
2

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

Мой php-заголовок ist установлен как 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 
} 

РНР не удается запустить через массив.

+0

Вы также установили правильную кодировку на поля БД? –

+0

Если я копирую и вставляю строку json в файл php и ссылаюсь на $ jsonfile, то json_decode без utf8_decode работает хорошо. Все записано в базу данных. Поэтому я запрашиваю, что это из-за кодировки DB – alex

ответ

0

(Im предполагая, что вы также записи клиента Java.)

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

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

+0

Нет, JSON исходит из другого источника. Я могу просмотреть JSON String, как это происходит. Если я копирую и вставляю его в код, он работает так, что могут быть специальные символы, которые я должен фильтровать. – alex