通过PHP将Unicode插入MSSQL


Inserting Unicode to MSSQL via PHP

我正在尝试将阿拉伯语插入mssql数据库。数据库列设置为nvarchar数据通过PHP发布到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);
> 
> ?>

要使字段能够存储unicode字符,必须使用类型nvarchar(或其他类似的类型,如ntextnchar)。

要在数据库中插入unicode字符,必须使用nvarchar/SqlDbType.NVarChar等参数类型以unicode形式发送文本。

(为了完整起见:如果您是动态创建SQL(根据常见建议),则在字符串文字之前放一个N,使其成为unicode。例如:insert into table (name) values (N'Pavan').