2011-04-11 6 views
0

Une fois de plus avec les problèmes de charset lorsque vous parlez à DB :)Problèmes de charset SQL Server 2000

J'ai deux environnements qui exécutent Zend Server. Bot de ceux-ci communiquent avec SQL Server 2000 en utilisant l'extension mssql. Aucun d'entre eux n'a de valeur donnée pour le charset dans les paramètres de l'extension. Pour un cela fonctionne et pour l'autre il renvoie des données dans le mauvais encodage.

Le problème est devenu remarqué lorsque ces données étaient insérées dans une base de données MySQL et il a crié avec SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF6m' for column 'cust_lastname' at row 1.

J'ai essayé d'utiliser SET NAMES utf8 pour obtenir la connexion SQL Server pour renvoyer les données correctes, mais il se plaint et dit NAMES is not a recognized SET statement. En regardant autour de la plupart des gens, il est même recommandé de l'utiliser, mais il ne semble pas faire partie de SQL Server 2000 :)

Alors, que dois-je faire? Comment puis-je, SANS bidouiller avec la base de données SQL Server/tables, lui dire de m'envoyer les données au format encodé UTF-8?

EDIT:

Un peu plus d'info ...

  • SQL Server utilise le classement Finnish_Swedish_CI_AS
  • MySQL a toutes les tables au format UTF-8 et utilise utf8_unicode_ci

Répondre

0

I n'a pas trouvé une bonne solution et a fini par convertir vers et depuis utf8 dans ma demande. Si ceci est encapsulé dans une classe, il ne déchiffre pas le code. Mais un moyen de dire au serveur SQL quel encodage utiliser lors de la communication serait meilleur.