PHP PDO: Charset=UTF8:在dsn字符串中指定了一个无效的关键字Charset


PHP PDO : Charset=UTF8 : An invalid keyword charset was specified in the dsn string

我正在使用sqlsrv驱动程序连接到带有PDO的MS SQL服务器。

PHP版本为5.3.24。工作连接如下所示:

$dsny = "sqlsrv:Server=xx1;Database=xx2";
$usery = 'xx3';
$passwordy = 'xx4';
$dbhy = new PDO($dsny, $usery, $passwordy);
* *

但是我需要设置字符,然后我尝试这个:

$dsny = "sqlsrv:Server=xx1;Database=xx2;charset=utf8";
$usery = 'xx3';
$passwordy = 'xx4';
$dbhy = new PDO($dsny, $usery, $passwordy);

当我添加字符集时,我得到这个错误:"致命错误:未捕获的异常'PDFException'伴有消息'SQLSTATE[IMSSP]:在dsn字符串'中指定了一个无效的关键字'charset' "

那么是什么导致了这个错误呢?

从我读到我需要这样做,因为我正在运行一个新的PHP版本。

您需要在连接后应用该属性:

$dbhy->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);

见:https://msdn.microsoft.com/en-us/library/ff628157 (v = sql.105) . aspx