我正在寫一個PHP腳本從Microsoft SQL Server 2008數據庫將數據導入MYSQL數據庫。爲什麼將MS SQL數據轉換爲MYSQL時會出現無效字符?
MSSQL服務器設置爲「SQL_Latin1_General_CP1_CI_AS」的排序規則,所涉及的數據存儲在「nchar」類型的列中。
我的PHP網頁使用
<meta http-equiv="content-type" content="text/html; charset=utf-8">
表明,他們應該使用UTF-8字符編碼來顯示。
我使用sqlsrv PHP擴展從MSSQL數據庫中提取數據。
$sql = 'SELECT * FROM [tArticle] WHERE [ID] = 6429';
$stmt = &sqlsrv_query($dbHandler, $sql);
while ($row = sqlsrv_fetch_object($stmt)) {
// examples of what I've tried simply to display the data
echo $row->Text1;
echo utf8_encode($row->Text1);
echo iconv("ISO-8859-1", "UTF-8", $row->Text1);
echo iconv("ISO-8859-1", "UTF-8//TRANSLIT", $row->Text1);
}
暫時忘記將數據插入MYSQL數據庫。我無法在我的PHP頁面中正確顯示字符串。從我上市的例子:
echo $row->Text1
是我的瀏覽器呈現爲明顯無效的字符:「露西」
所有下面的一個實例呈現爲空白:「露西」
它看起來像一個字符集不匹配的問題,但我怎樣才能讓這些數據正確顯示從MS SQL數據庫(不改變我的網頁編碼)?如果我能弄清楚,我可以將它存儲在MYSQL數據庫部分。
我還沒有和SQLSRV的工作,但你可能需要在連接到數據庫中去設置它的連接編碼。連接後在mysql下運行`SET NAMES utf8`。 – Fanis 2011-01-11 23:25:41