在 ODBC PHP 驱动程序和 MSSQL 中插入阿拉伯语文本

insertig arabic text with in ODBC PHP Driver with MSSQL

在我们的应用程序中,我们使用 Ms Sql 数据库,它托管在 sqladmin.winhost.com 上。我们已经 PHP 安装了 ODBC 驱动程序以及 Windows 服务器。数据库正在使用排序规则“Arabic_CI_AI”。

下面是向 Table 简单插入数据的代码。查询完全成功执行,但阿拉伯语数据丢失并插入了一些随机字符串 table.

当 $request['username'] 的值在数据库中为 "احمد علي عريبي" 时,它是用一些随机字符串接收的。

<?php 

$connectionString = 'DRIVER={SQL Server};SERVER=' . SERVER_NAME . ';DATABASE=' . DB_NAME;
$conn = odbc_connect($connectionString, USER_NAME, PASSWORD);
  $request=$_POST;      
echo $sql="INSERT INTO MobileNotificaiton.emp_user VALUES('test@gmail.com','MXI',200,'{$request['username']}','123','12365897452',1,'','','','')";        

        $results = odbc_exec($conn, $sql);

    $close = odbc_close($conn);

    ?>

谁能指导一下吗?

提前致谢。

经过一番研究,我找到了解决办法。 我在 PHP 中将阿拉伯文本转换为二进制,然后在使用 MSSQL 的 CAST 函数将数据插入 MSSQL 时将此二进制数据转换为所需的数据类型。

$connectionString = 'DRIVER={SQL Server};SERVER=' . SERVER_NAME . ';DATABASE=' . DB_NAME;
$conn = odbc_connect($connectionString, USER_NAME, PASSWORD);
$request=$_POST;      
$data = iconv("UTF-8", "UCS-2LE", $request['username']);
$unpacked = unpack('H*hex', $data);
$username='0x' . strtoupper($unpacked['hex']);

$sql="INSERT INTO MobileNotificaiton.emp_user VALUES('test@gmail.com','MXI',200,'{$username}','123','12365897452',1,'','','','')";        
$results = odbc_exec($conn, $sql);
$close = odbc_close($conn);

从数据库中获取数据时,我们以相反的顺序使用相同的过程。这样数据在 .NET 应用程序和 PHP 应用程序中是兼容的。这就是我的要求。