我正在尝试将阿拉伯语插入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
(或其他类似的类型,如ntext
、nchar
)。
要在数据库中插入unicode字符,必须使用nvarchar
/SqlDbType.NVarChar
等参数类型以unicode形式发送文本。
(为了完整起见:如果您是动态创建SQL(根据常见建议),则在字符串文字之前放一个N
,使其成为unicode。例如:insert into table (name) values (N'Pavan').
)