Php – SQL Server : SQLSTATE[IMSSP]: An error occurred translating string for input param 1 to UCS-2

Actuellement, je travaille sur une migration de SGBD. En effet, je vais passer d’un environnement MySQL à un environnement Microsoft SQL Server. D’un point de vue PHP, si la surcouche PDO (pour info, j’utilise l’ORM idiorm) facilite grandement la migration, je tombe parfois sur des erreurs qui me laissent pantois.

Pas plus tard qu’aujourd’hui, en testant l’insertion d’un enregistrement contenant des caractères spéciaux (ex. Raphaël) via formulaire, je me suis retrouvé face à cette erreur :

Erreur : SQLSTATE[IMSSP]: An error occurred translating string for input param 1 to UCS-2: Il n’y a pas de caractère correspondant au caractère Unicode dans la page de codes multi-octet cible.

 

Le problème semble provenir de l’encodage UTF-8 qui est mal pris en compte par le driver sqlsrv. Après de longues heures à parcourir les forums, wikis et autres joyeusetés, j’ai enfin trouvé la solution.

En fait, il suffit simplement d’ajouter (avant le script de connexion au serveur SQL Server) :

mb_internal_encoding( 'UTF-8' );

 

Et le tour est joué ! ^^

3 commentaires

En effet, ça fonctionne, moi j’avais ce soucis car je convertissait une variable avant avec strtolower, donc il faut utiliser mb_strtolower($Vars, ‘UTF-8’); et c’est good.

…. Les joies du code.

Comments are closed.