没有utf8_encode,json_decode不起作用

时间:2013-10-09 10:18:21

标签: php tsql json utf8-decode

我从java获取一个utf8-json-String作为post变量到我的php文件中。

我的php标题设置为charset = utf-8,html charset = utf-8,php文件为utf8,没有BOM。

我尝试将json数据写入TSQL数据库。

如果我这样做

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

所有数据都写入我的数据库。不幸的是,charset删除了像ß(ß)这样的德国字符。

如果我只做

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

php无法通过数组运行。

1 个答案:

答案 0 :(得分:0)

(我假设您也在编写Java客户端。)

将POST请求发送为Content-type: application/json,将JSON作为请求的有效负载发送,而不是在表单字段中以application/x-www-form-urlencoded的形式发送大量JSON。

您可以使用file_get_contents("php://input")在PHP中阅读有效负载的完整内容。