我使用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