Encodage des caractères problème avec PDO_ODBC

Lors de l'accès à une Base de données Microsoft SQL à partir de PHP à l'aide de PDO_ODBC avec le code suivant, j'ai un problème de codage. Lorsque outputed le texte à partir de la DB est déformé.

$dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=UTF-8";
$pdo = new PDO($dsn,$username,$password);
$sql = "SELECT text FROM atable";
$result = $PDO->query($sql);
while($data = $result->fetchObject()){
  $values[] = $data->text; 
}
dpm($values);

sortie tronquée http://image.bayimg.com/naomcaacd.jpg

C'est fait à partir d'un module Drupal. Tout en Drupal est faite pour fonctionner avec de l'UTF-8. La solution la plus propre serait de pouvoir récupérer les données à partir de la base de données en UTF-8 ou de le convertir en UTF-8 avant de sortir.

J'ai essayé sans succès

  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;client_charset=utf-8"
  • $dsn = "odbc:DRIVER={SQL Server};SERVER=$hostname;DATABASE=$database;charset=utf-8"
  • $pdo->exec('SET NAMES utf8') après new PDO(...)
  • $pdo->exec('SET CHARACTER SET utf8'); après new PDO(...)

PS: Le code est actuellement développé sous Windows, mais il a de travailler sur GNU/Linux.

OriginalL'auteur Pierre Buyle | 2010-08-12