J'utilise ODBC pour me connecter à SQL Server depuis PHP. En PHP, j'ai lu des données chaîne (colonne nvarchar) de SQL Server, puis je voudrais l'insérer dans la base de données mysql. Lorsque je tente d'insérer une telle valeur à la table de base de données MySQL Je reçois cette erreur mysql:Problème d'encodage Php/ODBC
Incorrect string value: '\xB3\xB9ow...' for column 'name' at row 1
Pour chaîne avec tous les tout caractères ASCII est très bien, le problème se produit lorsque les caractères non-ASCII (de certaines langues européennes) existent. Donc, en termes plus généraux: il y a une chaîne Unicode dans la base de données MS SQL Server, qui est récupérée par PHP via ODBC. Ensuite, il est placé dans une requête d'insertion sql (en tant que valeur pour la colonne varchar utf-8) qui est exécutée pour la base de données mysql. Est-ce que quelqu'un peut m'expliquer ce qui se passe dans cette situation en termes d'encodage? A quelle étape quel caractère codant les conversions peut-il avoir lieu?
-je utiliser: PHP 5.2.5, MySQL5.0.45-community-nt, MS Sql Server 2005.
PHP doivent fonctionner sur la plate-forme Linux .
MISE À JOUR: L'erreur ne se produit pas quand je l'appelle utf8_encode ($ s) sur cette chaîne et d'utiliser cette valeur dans la requête d'insertion mysql, mais la chaîne insérée n'affiche pas correctement dans la base de données MySQL (de sorte que L'encodage utf8 ne fonctionnait que pour forcer la chaîne utf8 correcte, mais il perd les caractères corrects).
Êtes-vous limité à odbc ou pouvez-vous installer/utiliser par ex. les extensions sqlsrv? http://msdn.microsoft.com/en-us/library/cc296152%28SQL.90%29.aspx Cela vous permet de spécifier (facilement) le jeu de caractères de la connexion. – VolkerK
Cette solution devra fonctionner sous Linux et l'extension que vous avez mentionnée n'est malheureusement pas supportée sur cette plateforme. – JohnM2
MySQL! = MSSQL. –