2013-10-09 70 views
2

我得到一個utf8-json-String作爲post變量到我的php文件。json_decode不工作沒有utf8_encode

我的php header ist設置爲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的無法通過陣列運行。

+0

您是否在數據庫字段上設置了正確的字符集? –

+0

如果我將json字符串複製並粘貼到php文件中並將其引用到$ jsonfile,則不帶utf8_decode的json_decode運行良好。一切都寫入數據庫。所以我查詢它是因爲DB字符集 – alex

回答

0

(IM假設你還編寫Java客戶端。)

發送POST請求爲Content-type: application/json和JSON作爲請求的有效載荷,而不是一個表單字段使用JSON的大塊發送它作爲application/x-www-form-urlencoded

您可以通過file_get_contents("php://input")閱讀PHP中有效負載的完整內容。

+0

不,JSON來自另一個來源。我可以查看JSON字符串是如何發生的。如果我將它複製並粘貼到代碼中,它可能會出現特殊字符,我必須進行過濾。 – alex