Я использую ODBC для подключения к SQL Server с PHP. В PHP я прочитал данные строки (nvarchar) из SQL Server и затем хочу вставить ее в базу данных mysql. При попытке вставить такое значение таблицы базы данных MySQL я получаю эту ошибку MySQL:Проблема кодирования Php/ODBC
Incorrect string value: '\xB3\xB9ow...' for column 'name' at row 1
Для строки со всеми ASCII-символов все нормально, проблема возникает, когда существует не-ASCII символов (из некоторых европейских языков).
Итак, в более общих чертах: в базе данных MS SQL Server имеется строка Unicode, которая извлекается через PHP-корыто ODBC. Затем он помещается в запрос sql insert (как значение для столбца varchar utf-8), который выполняется для базы данных mysql.
Может кто-нибудь объяснить мне, что происходит в этой ситуации с точки зрения кодирования? На каком этапе могут произойти преобразования символов?
Я использую: PHP 5.2.5, MySQL5.0.45-сообщества нт, MS Sql Server 2005.
PHP должны работать на Linux платформы.
UPDATE: ошибка не происходит, когда я звоню utf8_encode ($) на этой строке и использовать это значение в MySQL вставки запроса, но затем вставляется строка не будет правильно отображаться в базе данных MySQL (так что Кодирование utf8 работает только для обеспечения правильной строки utf8, но оно теряет правильные символы).
Вы ограничены odbc или можете установить/использовать, например. расширения sqlsrv? http://msdn.microsoft.com/en-us/library/cc296152%28SQL.90%29.aspx Он позволяет (легко) указать набор символов соединения. – VolkerK
Это решение должно работать на Linux, и указанное расширение, к сожалению, не поддерживается на этой платформе. – JohnM2
MySQL! = MSSQL. –