2014-09-28 76 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