我使用ODBC從PHP連接到SQL Server。 在PHP中,我從SQL Server中讀取一些字符串(nvarchar列)數據,然後將其插入到mysql數據庫中。當我嘗試插入這樣的價值MySQL數據庫表我得到這個MySQL錯誤:Php/ODBC編碼問題
Incorrect string value: '\xB3\xB9ow...' for column 'name' at row 1
對於字符串的所有ASCII字符,一切都很好,當非ASCII字符(從一些歐洲語言)存在出現問題。
所以,更一般地說:MS SQL Server數據庫中有一個Unicode字符串,它通過ODBC通過ODBC檢索。然後它被放入SQL數據庫執行的SQL插入查詢(作爲utf-8 varchar列的值)。
有人可以向我解釋在這種情況下在編碼方面發生了什麼?在哪一步可能發生字符編碼轉換?
我使用:PHP 5.2.5,MySQL5.0.45社區-NT,MS SQL Server 2005的
PHP必須在Linux的平臺上運行。
UPDATE:,當我在這個字符串調用函數utf8_encode($ S)和在MySQL中使用插入查詢該值,但隨後插入的字符串不mysql數據庫中正確顯示(這樣就不會發生錯誤utf8編碼僅用於執行正確的utf8字符串,但它丟失了正確的字符)。
您僅限於使用odbc,或者您是否可以安裝/使用sqlsrv擴展? http://msdn.microsoft.com/en-us/library/cc296152%28SQL.90%29.aspx它允許您(輕鬆地)指定連接的字符集。 – VolkerK 2010-05-01 14:58:19
該解決方案必須在Linux上運行,並且不幸在此平臺上不支持您提及的擴展。 – JohnM2 2010-05-01 15:04:31
MySQL!= MSSQL。 – 2010-05-01 23:53:20