Problema de codificação de caracteres com PDO_ODBC
Ao acessar um banco de dados Microsoft SQL a partir do PHP usando PDO_ODBC com o código a seguir, tenho um problema de codificação. Quando emitido, o texto do banco de dados é ilegível.
$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);
saída ilegível http://image.bayimg.com/naomcaacd.jpg
Isso é feito a partir de um módulo Drupal. Tudo no Drupal é feito para funcionar com UTF-8. A solução mais limpa seria conseguir recuperar os dados do banco de dados em UTF-8 ou convertê-los em UTF-8 antes da saída.
Eu tentei isso sem nenhum sucesso
$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')
depois denew PDO(...)
$pdo->exec('SET CHARACTER SET utf8');
depois denew PDO(...)
PS: O código está atualmente desenvolvido no Windows, mas também deve funcionar no GNU / Linux.