Я пытаюсь вставить арабский язык в базу данных 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);
>
> ?>
Чтобы поле могло хранить символы Юникода, вы должны использовать тип nvarchar
(или другой подобный ntext
, nchar
).
Чтобы вставить символы Unicode в базу данных, вы должны отправить текст как Unicode, используя тип параметра, например nvarchar
/ SqlDbType.NVarChar
,
(Для полноты: если вы создаете SQL динамически (вопреки общему совету), вы ставите N
перед строковым литералом, чтобы сделать его Unicode. Например: insert into table (name) values (N'Pavan').
)
Других решений пока нет …