PHP 5.6 PDO sqlsrv CharacterSet

时间:2016-03-20 12:02:43

标签: php sql-server pdo encoding sqlsrv

我想从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);

0 个答案:

没有答案