Я использую ODBC для подключения к SQL Server из PHP.
В PHP я читаю некоторые строковые данные (столбец nvarchar) из SQL Server и затем хочу вставить их в базу данных mysql. Когда я пытаюсь вставить такое значение в таблицу базы данных mysql, я получаю эту ошибку mysql:
Incorrect string value: '\xB3\xB9ow...' for column 'name' at row 1
Для строки со всеми символами ASCII все в порядке, проблема возникает, когда существуют не-ASCII символы (из некоторых европейских языков).
Итак, в более общих чертах: в базе данных MS SQL Server есть строка Unicode, которая извлекается PHP через ODBC. Затем он помещается в SQL-запрос вставки (в качестве значения для столбца utf-8 varchar), который выполняется для базы данных mysql.
Может кто-нибудь объяснить мне, что происходит в этой ситуации с точки зрения кодирования? На каком этапе могут выполняться преобразования кодировки символов?
Я использую: PHP 5.2.5, MySQL5.0.45-community-nt, MS Sql Server 2005.
PHP должен работать на Linux платформе.
ОБНОВЛЕНИЕ: Ошибка не возникает, когда я вызываю utf8_encode ($ s) для этой строки и использую это значение в запросе вставки mysql, но тогда вставленная строка не отображается правильно в базе данных mysql (чтобы кодировка utf8 работала только для принудительного применения правильной строки utf8, но при этом теряла правильные символы).