2010-07-15 48 views
1

我在运行MSSQL_QUERY时如何获得阿拉伯文内容?PHP从SQL SERVER获得阿拉伯语内容

它显示为????,我试着这样做:

$res = mssql_query($q); 
$row = mssql_fetch_row($res) 
echo iconv("unicode", "utf-8", $row[0]) 

但在这种情况下,它显示为潬穬

值作为中国信任何建议高度赞赏

+1

数据库连接的编码是什么,数据库的编码是什么,输出页面的编码是什么? – 2010-07-15 07:15:07

+0

我的数据库: SQL Server 2005中: DB归类:Latin1_General_CI_AS Server排序:Arabic_CI_AS 我在输出页面编码:UTF8 – Alaa 2010-07-15 07:47:00

+0

和datattpe在SQL Server?我认为nchar或nvarchar? – 2010-07-15 09:17:06

回答

2

只需使用Unicode数据类型即可。 Unicode数据类型的nchar,nvarchar的,为nvarchar(max)和ntext的,你必须要加上一个大写字母N.

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

这是很长的时间了,我有用你提到的相同方式解决它;;) – Alaa 2011-04-21 05:47:13

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]); 

等。

+3

SET NAMES的'utf8'是mysql语句,而问题是关于Microsoft SQL server 2005. 但是,感谢您的关注和帮助。 我的页面保存为UTF-8 和echo iconv(“Latin1_General_CI_AS”,“utf-8”,$ row [0]); echo iconv(“Arabic_CI_AS”,“utf-8”,$ row [0]); 他们都没有打印什么:( – Alaa 2010-07-15 09:06:10

+0

那么,我还没有与MSSQL的工作,但不是有一些相当于SET NAMES? – 2010-07-15 09:54:40

+0

不幸的是我不知道任何SQL服务器的等效 问题是,标准输出编码的sql server是unicode,但是当我把它转换为utf-8时它变成了中文!!!然而,如果我得到了解决方案,我会在这里发布肯定 谢谢 – Alaa 2010-07-15 12:04:19

0

首先尝试安装上http://msdn.microsoft.com/en-us/library/cc793139%28v=sql.90%29.aspx发现SQLSRV驱动程序的所有Unicode字符串。正确地按照指示后,连接到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司机的帮助文档。 希望它有帮助。