我想从PHP 5.6中使用PDO和sqlsrv(包括native和pdo扩展)从sql server获取数据。 但是使用PDO我的数据编码错误。
数据库整理:Latin1_General_CI_AS
本机:
$connectionInfo = array("Database"=>"TestDatabase", "UID"=>"user", "PWD"=>"pwd", "CharacterSet" => 'UTF-8');
$conn = sqlsrv_connect("TestServer", $connectionInfo);
结果(使用简单的sqlsrv_query): 的AeÖö
PDO:
$pdo = new PDO("sqlsrv:Server=TestServer;Database=TestDatabase", "user", "pwd");
$pdo->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);
$stmt = $pdo->query("SELECT * FROM testTable WHERE id = 356");
$data = $stmt->fetchAll();
print_r($data);
结果:AeÃ-ö
是否有PDO的属性或东西我可以在utf-8中获取数据? 使用原生扩展,它可以很好地工作。
我找到了解决方案。
对于PDO,这对我有用:
$pdo = new PDO("sqlsrv:Server=TestServer;Database=TestDatabase", "user", "pwd");
$pdo->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_SYSTEM); //Important!!!
$stmt = $pdo->query("SELECT * FROM testTable WHERE id = 356");
$data = $stmt->fetchAll();
print_r($data);