我在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回答我说,驱动程序不支持它......
提前感谢任何帮助
答案 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);