Khi truy cập Cơ sở dữ liệu Microsoft SQL từ PHP bằng PDO_ODBC với mã sau, tôi gặp sự cố mã hóa. Khi xuất văn bản từ DB bị cắt xén.Vấn đề mã hóa ký tự với 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
này được thực hiện từ một module Drupal. Tất cả mọi thứ trong Drupal được thực hiện để làm việc với UTF-8. Giải pháp sạch nhất là có thể lấy dữ liệu từ cơ sở dữ liệu trong UTF-8 hoặc để chuyển đổi nó UTF-8 trước khi xuất.
tôi đã cố gắng những không có thành công
$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')
saunew PDO(...)
$pdo->exec('SET CHARACTER SET utf8');
saunew PDO(...)
PS: Mã hiện đang developped trên Windows nhưng nó có để làm việc trên GNU/Linux.
Nếu tôi sử dụng cấu hình ODBC chỉ và kết nối với PHP PDO odbc, tôi không thể nhận được dữ liệu UTF-8. –