2016-08-02 120 views
1

我知道有很多這方面的問題。我嘗試了很多東西,但我無法修復它。由於我的知識有限,我可能無法執行解決方案?json_encode()對於特殊字符返回null

我從mysql數據庫中選擇數據並對其使用json_encode()函數。這適用,除了包含特殊字符(土耳其語)的數據。對於這些值,json返回null。我怎樣才能解決這個問題?

這裏是我的簡單的PHP代碼:

<?php 

require('init.php'); 

$sql="SELECT * FROM tablename;"; 

$result=mysqli_query($con,$sql); 
$response=array(); 

while($row=mysqli_fetch_array($result)){ 


array_push($response,array("X"=>$row["x"],"Y"=>$row["y"])); 

} 

echo json_encode($response); 


?> 

在mysql中,列設置爲UTF-8和土耳其。我嘗試過設置標題,調用一些函數,以utf8編碼重新創建php文件等,但沒有任何工作。

+0

你設置了mysqli字符集http://php.net/manual/en/mysqli.set-charset.php – RiggsFolly

+2

[json \ _encode函數:特殊字符]的可能重複(http://stackoverflow.com/問題/ 20694317/json-encode-function-special-characters) –

+0

Hello Riggs。不,我還沒有嘗試過。我是否需要在我的連接腳本(init.php)中編寫? – user6650650

回答

1

在我的連接腳本中使用mysqli_set_charset函數解決了這個問題。在類似的問題上找不到這個。感謝用戶「RiggsFolly」。

-1

添加TRUEjson_decode($string, TRUE);這將使您獲得utf8字符而不是Unicode轉義序列(如\u00d6)。

在連接,表格和html中,您需要utf8(或utf8mb4)。請參閱this