При доступе к базе данных Microsoft SQL из PHP с использованием 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);
(источник: bayimg.com )
Это сделано из модуля Drupal. Все в Drupal предназначено для работы с UTF-8. Самым чистым решением будет возможность извлечения данных из базы данных в UTF-8 или преобразовать его в UTF-8 перед выводом.
Я попробовал их безуспешно.
$ 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')
после нового PDO (.. .)
$ pdo-> exec ('SET CHARACTER SET utf8');
после нового PDO (...)
PS: код в настоящее время разрабатывается в Windows, но он должен работать в GNU / Linux тоже.