PHP / ODBC-Codierungsproblem

Ich verwende ODBC, um eine Verbindung von PHP zu SQL Server herzustellen. In PHP habe ich einige Zeichenfolgendaten (nvarchar column) von SQL Server gelesen und möchte sie dann in die mysql-Datenbank einfügen. Wenn ich versuche, einen solchen Wert in eine MySQL-Datenbanktabelle einzufügen, erhalte ich den folgenden MySQL-Fehler:

Incorrect string value: '\xB3\xB9ow...' for column 'name' at row 1

Bei Strings mit allen ASCII-Zeichen ist alles in Ordnung. Das Problem tritt auf, wenn Nicht-ASCII-Zeichen (aus einigen europäischen Sprachen) vorhanden sind.

So, allgemeiner ausgedrückt: Es gibt eine Unicode-Zeichenfolge in der MS SQL Server-Datenbank, die von PHP über ODBC abgerufen wird. Dann wird es in die SQL-Einfügeabfrage (als Wert für die Spalte "utf-8 varchar") gestellt, die für die MySQL-Datenbank ausgeführt wird.

Kann mir jemand erklären, was in Bezug auf die Codierung in dieser Situation passiert? In welchem Schritt können welche Zeichenkodierungskonvertierungen stattfinden?

Ich verwende: PHP 5.2.5, MySQL5.0.45-community-nt, MS SQL Server 2005.

PHP muss auf @ lauf Linux Plattform.

AKTUALISIEREN Der Fehler tritt nicht auf, wenn ich utf8_encode ($ s) für diese Zeichenfolge aufrufe und diesen Wert in mysql insert query verwende, die eingefügte Zeichenfolge jedoch in der mysql-Datenbank nicht korrekt angezeigt wird (sodass die utf8-Codierung nur zur Durchsetzung der ordnungsgemäßen Funktion dient utf8-String, verliert aber die korrekten Zeichen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage