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时,它会变成中文!!!但是,如果我找到了解决方案,我肯定会在这里发布它,谢谢这是非常低的。)我已经用你提到的方法解决了它