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

PHP PDO:Charset=UTF8:在dsn字符串中指定了无效的关键字Charset,php,sql,character-encoding,pdo,Php,Sql,Character Encoding,Pdo,我正在使用sqlsrv驱动程序通过PDO连接到MS SQL server 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;cha

我正在使用sqlsrv驱动程序通过PDO连接到MS SQL server

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);

请参阅:

我尝试了utf8、utf8、utf-8、iso-8859-1、greek1等。。它似乎是关于“字符集”的,而不是我试图设置的实际字符集。sqlsrv DSN支持这个关键字吗?你是对的。这不是我们要走的路。我在寻找一个设置字符的解决方案。很好的答案。但是,我在setAttribute中已经有两个参数,并且还想添加它们。既然只允许使用两个参数,我如何将这两个参数与我已有的参数相加
$con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)
您只需添加另一个带有另一个参数的“setAttribute”行。