Quando si accede a un database Microsoft SQL da PHP utilizzando PDO_ODBC con il codice seguente, si verifica un problema di codifica. Quando viene emesso il testo dal DB è confuso.Problema di codifica dei caratteri 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
Questo viene fatto da un modulo Drupal. Tutto in Drupal è fatto per funzionare con UTF-8. La soluzione più pulita sarebbe quella di poter recuperare i dati dal database in UTF-8 o convertirli in UTF-8 prima dell'output.
ho provato questi, senza alcun successo
$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')
doponew PDO(...)
$pdo->exec('SET CHARACTER SET utf8');
doponew PDO(...)
PS: Il codice è attualmente sviluppata su Windows, ma ha lavorare anche su GNU/Linux.
Se uso la configurazione ODBC-only e connettersi con PHP DOP ODBC, non posso ottenere dati UTF-8. –