Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从SQL SERVER获取阿拉伯语内容_Php_Sql Server_Arabic - Fatal编程技术网

PHP从SQL SERVER获取阿拉伯语内容

PHP从SQL SERVER获取阿拉伯语内容,php,sql-server,arabic,Php,Sql Server,Arabic,运行MSSQL\u查询时如何获取阿拉伯语内容 它显示为?,我尝试这样做: $res = mssql_query($q); $row = mssql_fetch_row($res) echo iconv("unicode", "utf-8", $row[0]) 但在本例中,它将值显示为中文字母潬穬 非常感谢您的任何建议。在选择阿拉伯文文本之前,请尝试将其发送到数据库: SET NAMES utf8; 例如,使用PDO时: try { $dbh = new PDO(

运行
MSSQL\u查询时如何获取阿拉伯语内容

它显示为
,我尝试这样做:

$res = mssql_query($q);
$row = mssql_fetch_row($res)
echo iconv("unicode", "utf-8", $row[0])
但在本例中,它将值显示为中文字母
潬穬


非常感谢您的任何建议。在选择阿拉伯文文本之前,请尝试将其发送到数据库:

SET NAMES utf8;
例如,使用PDO时:

try {           
    $dbh = new PDO(
    'mysql:host=127.0.0.1;dbname=dbname',
    'root',
    'root',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
} catch (Exception $e) {
    echo $e->getMessage();
}
其次,确保所有文件(PHP文件、HTML模板)都使用UTF-8编码保存

第三,如果所有这些都失败了,请尝试进一步使用iconv()函数:

echo iconv("Latin1_General_CI_AS","utf-8",$row[0]);
echo iconv("Arabic_CI_AS","utf-8",$row[0]);

等等。

只需使用Unicode数据类型即可。Unicode数据类型为nchar、nvarchar、nvarchar(max)和ntext,并且必须在所有Unicode字符串前面加上大写字母N

INSERT INTO TableName (ColumnName) values(N'Arabic Text')

首先尝试安装在上找到的sqlsrv驱动程序。正确遵循说明后,连接到sql server时,请使用:

$connArr = array(
    "Database"     => $dPconfig['dbname'],
    "UID"          => $dPconfig['dbuser'],
    "PWD"          => $dPconfig['dbpass'],
    "CharacterSet" => "UTF-8"
);

$conn = sqlsrv_connect($dPconfig['dbhost'], $connArr) or die("cannot connect");
它应该很好用 有关其他编码,请参见sqsrv驱动程序的帮助文档。
希望有帮助。

您的数据库连接使用什么编码,您的数据库使用什么编码,您的输出页面使用什么编码?我的数据库:Sql server 2005:DB排序规则:Latin1_General_CI_AS server排序规则:阿拉伯语_CI_AS我的输出页面编码是:UTF8,Sql server中的datattpe?我假定nchar或nvarchar?集合名称“utf8”是mysql语句,而问题是关于Microsoft SQL server 2005的。不过,感谢您的关注和帮助。我的页面保存为UTF-8和echo iconv(“拉丁语1_General_CI_as”,“UTF-8”,“$row[0]);echo iconv(“阿拉伯语”、“utf-8”、“美元行[0]);它们都不打印任何内容:(好吧,我还没有使用MSSQL,但是有没有一些与集合名等效的名称?不幸的是,我不知道SQL server中有任何等效的名称。问题是SQL server的标准输出编码是unicode,但是当我将其转换为utf-8时,它会变成中文!!!但是,如果我找到了解决方案,我肯定会在这里发布它,谢谢这是非常低的。)我已经用你提到的方法解决了它