Al acceder a una base de datos Microsoft SQL desde PHP utilizando PDO_ODBC con el siguiente código, tengo un problema de codificación. Cuando se supera, el texto del DB está distorsionado.Problema de codificación de caracteres con PDO_ODBC
$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);
garbled output http://image.bayimg.com/naomcaacd.jpg
Esto se hace a partir de un módulo de Drupal. Todo en Drupal está hecho para funcionar con UTF-8. La solución más limpia sería poder recuperar los datos de la base de datos en UTF-8 o convertirlos en UTF-8 antes de la salida.
he probado todas estas sin ningún éxito
$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')
despuésnew PDO(...)
$pdo->exec('SET CHARACTER SET utf8');
despuésnew PDO(...)
PS: El código es desarrollado actualmente en Windows pero tiene para trabajar en GNU/Linux también.
Si uso la configuración de ODBC de sólo y conectarse con PHP PDO ODBC, no puedo obtener los datos UTF-8. –