2010-07-15 20 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司機的幫助文檔。 希望它有幫助。