SQL Server — Вставка Unicode в MSSQL через переполнение стека

Я пытаюсь вставить арабский язык в базу данных 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);
>
> ?>

0

Решение

Чтобы поле могло хранить символы Юникода, вы должны использовать тип nvarchar (или другой подобный ntext, nchar).

Чтобы вставить символы Unicode в базу данных, вы должны отправить текст как Unicode, используя тип параметра, например nvarchar / SqlDbType.NVarChar,

(Для полноты: если вы создаете SQL динамически (вопреки общему совету), вы ставите N перед строковым литералом, чтобы сделать его Unicode. Например: insert into table (name) values (N'Pavan').)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]