2015-07-20 148 views
1

我想用PHP檢索SQL Server中的中文數據存儲。我如何做到這一點,因爲我試着用下面的代碼,但它不工作。它只是返回???????????使用PHP從SQL Server中檢索中文數據?

我的代碼:

$query = "SELECT     
       [name] 
       ,[venue]     
       FROM tablename 
       WHERE id = '2'"; 

/**********************************************/ 
//Just for the Purpose of Count Number of Rows 
$params = array(); 
$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET); 
/******************************/ 

#Query the database to get the user details. 
$res = sqlsrv_query($conn, $query, $params, $options); 

$arr = array(); 
#If no data was returned, check for any SQL errors 
if ($res == false) 
{ 
    echo 'Query not Executed : '. die(print_r(sqlsrv_errors(), TRUE)); 
} 
else 
{  
    while($obj = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC)) 
    { 
     $arr[] = array(
     "name" => $obj['name'], 
     "venue" => $obj['venue'] 
     ); 
    } 
} 

header('Content-type: application/json; charset=utf-8'); 
#Output the JSON data 
echo json_encode($arr); 
exit(); 


sqlsrv_free_stmt($res); // Closes a statement. Frees all resources associated. 
sqlsrv_close($conn); // Closes a connection. Frees all resources associated. 

我的數據庫表結構:
enter image description here

+0

您必須將Column數據類型設置爲NVARCHAR才能在SQL SERVER中支持多語言。 –

+0

** @ Paresh J **是的,我正在使用NVARCHAR。 – Mediasoft

+0

你可以顯示你的表格結構嗎? –

回答

1

抓住我的腦海裏有很多在此之後終於讓我找到了解決辦法我自己解決的辦法是隻添加字符集選項您的連接字符串。

例如:

$result = sqlsrv_connect($hostname, array(
     'UID' => $username, 
     'PWD' => $password, 
     'Database' => $database, 
     "CharacterSet" => "UTF-8"  
)); 

所以只是添加「字符集」=> 「UTF-8」

希望這將解決這一問題。

謝謝。

+0

令人敬畏的人,你讓我的一天。我真的堅持了這個項目的最後一點。非常感謝真棒。 –

相關問題