2012-08-09 105 views
1

從MSSQL數據庫中讀出時,我有一點PHP的,從一個MSSQL數據庫中獲取數據,並將其保存到一個數組:分音符顯示爲問號與PHP

while($row = mssql_fetch_array($dbquery, MSSQL_NUM)) 
{ 
    $content = array(
     'something'   => $row[1], 
     'something_else' => $row[2] 
     // etcetera 
    ); 
} 

(爲什麼我寫的理由數據像一個數組是不相關的,我認爲,但如果你一定要知道:那是因爲數據是由ExpressionEngine(EECMS)解析的PHP代碼是一個插件,我發展的一部分,這是最簡單的方法使可用於ExpressionEngine標籤使用的數據。)

一些在德MSSQL數據庫中的數據包含punctuat如ë和é。 diaeresis(ë)在HTML中顯示爲問號。例如,Cliënten被示出爲Cli�nten

的HTML是UTF8:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我不能改變在MSSQL數據庫什麼。解決這個問題的最好方法是什麼?

回答

1

當您看到類似的問號時,這意味着您的瀏覽器無法理解問號所代替的字符應該表示什麼。最有可能的是,它期待utf8字符編碼,並沒有得到它們。

試試你的陣列上運行的是這樣的(它的建成後),看看是否有幫助:

$content = array_map('utf8_encode', $content); 

基本上你想對所有出來的數據庫的字符串運行函數utf8_encode()函數因爲顯然它們不是在數據庫中編碼的。

你可以,你也輸出每個變量之前立即運行函數utf8_encode功能。 因此,像:

<p><?php echo utf8_encode($content_row) ?></p> 
+1

'$內容= array_map( '函數utf8_encode',$內容);'的伎倆,謝謝! – Rein 2012-08-09 13:08:06