I want to get data from a sql server within PHP 5.6 with PDO and sqlsrv (native and pdo extension included). But with PDO im getting the data in a wrong encoding.
Database Collation: Latin1_General_CI_AS
Native:
$connectionInfo = array("Database"=>"TestDatabase", "UID"=>"user", "PWD"=>"pwd", "CharacterSet" => 'UTF-8');
$conn = sqlsrv_connect("TestServer", $connectionInfo);
Result (with a simple 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);
Result: AeÖö
Is there an attribute or something for PDO that i can get the data in utf-8? With the native extension it works perfectly.
I've found the solution.
For PDO this worked for me:
$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);