2014-09-28 73 views
0

我試圖插入阿拉伯語言到MSSQL數據庫。數據庫列設置爲nvarchar 數據通過PHP發佈到mssql存儲過程。通過PHP插入Unicode到MSSQL

的問題是:數據得到插入作爲މުއްދަތު Þ‡Þ¨Þްތިއުނާފް ÞŠÞ¯Þ‰Þ¬

可以在任何一個請幫我去插入正確的數據而無需轉換。

> <?php header('Content-Type: text/html; charset=utf-8'); include_once 
> 'connect.php'; 
> 
> sqlsrv_query ($conn,"set character_set_client='utf8'"); 
> sqlsrv_query ($conn,"set character_set_results='utf8'"); 
> sqlsrv_query ($conn,"set collation_connection='utf8_general_ci'"); 
> 
> 
> 
> $tsql = 'Exec SP @NO=?,@Date=?,@IN=?,@creason=?';    
> $params = array($empno,$dutydate,$inDT,$outDT,$reason); 
> 
> $stmt = sqlsrv_query($conn,$tsql,$params) ; 
> 
>  $dataArray = array(); 
>  if ($stmt === false)  {   echo 'SQL Error';   print_r(sqlsrv_errors());  }  else  { 
>   
>   
>   
>    $dataArray['error'] =array(); 
>    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
>     array_push($dataArray['error'],$row); 
>    } 
>    sqlsrv_free_stmt($stmt); 
>    
>    } echo json_encode($dataArray); 
> 
> ?> 
+0

包括一些代碼的顯示問題。 http://stackoverflow.com/help/mcve – 2014-09-28 05:41:52

回答

1

對於現場能夠存儲Unicode字符,你必須使用類型nvarchar(或其他類似像ntextnchar)。

要在數據庫中插入unicode字符,必須使用類似nvarchar/SqlDbType.NVarChar的參數類型將文本發送爲unicode。

(出於完整性:如果您正在創建SQL動態(針對常見的建議),你一個字符串,使其統一前加上一個N例如:insert into table (name) values (N'Pavan').

+0

$ tsql ='Exec SP @NO =?,@ Date =?,@ IN =?,@ creason =?'; $ params = array($ empno,$ dutydate,$ inDT,$ outDT,$ reason); $ stmt = sqlsrv_query($ conn,$ tsql,$ params); 我想在unicode中發送這個($ reason)參數。你能提到嗎?像N'@ Reason'? – AMEX 2014-09-28 05:44:31