MsSQL编码问题

时间:2012-08-22 07:01:46

标签: php sql-server pdo

我在MsSQL中有一个数据库,我通过PDO对象连接我的PHP代码。 数据库有“Kadź”列。

现在 - 如果我执行

SELECT Kadź FROM <tablename>

从我的SQL Server Management Studio查询 - 一切正常,我得到了结果。 但是,当我尝试执行

$sql = "SELECT Kadź FROM <tablename>";

我收到了

  
    

SQLSTATE [HY000]:常规错误:207常规SQL Server错误:检查来自SQL Server的消息[207](严重级16)[(null)]

  

错误。 查询任何其他列不会产生任何问题,但是这一点确实存在。我怀疑这是因为该列名称中的“ź”字符,在我的PHP代码和数据库之间的路由上没有正确编码。

我的服务器使用的排序规则是“Polish_Cl_Al”。 我试过通过添加属性来修复它

$this->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAME'utf8'");

但PDO回答我说,驱动程序不支持它......

提前感谢任何帮助

1 个答案:

答案 0 :(得分:5)

您可以尝试:

$pdo = new PDO('dblib:host=localhost;dbname=databasename;charset=UTF-8', 'username', 'password');

或(对于Windows)

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