【发布时间】:2021-06-25 08:11:25
【问题描述】:
我使用如下方式连接到 SQL Server:
$pdo = new PDO("odbc:DRIVER=ODBC Driver 17 for SQL Server;SERVER=$serverName;DATABASE=$dbName", $username, $password);
PDO 实例已创建,我可以使用它运行 SQL 查询,但有时会出现与字符集相关的错误。
数据库排序规则是非 unicode (latin2),我希望得到 UTF8 格式的响应。怎么可能定义呢?
我能够找到一些参数,例如 PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ...",但这里没有这些参数,因为我有一个 SQL Server。
【问题讨论】:
-
你可以使用支持全Unicode的
nvarchar -
我无法更改列定义
-
那你期待什么?这些不是 PHP 错误,SQL Server 告诉您它根本无法使用该排序规则将该数据存储在
varchar列中,这是不可能的。字符集错误到底是什么,它是如何发生的(是什么代码导致的)? -
@Charlieface 我们之前使用过旧的
mssql_函数,并且一切正常。表格是使用mssq_从 php 填充的。现在我们升级到 PHP 7,我们唯一的选择是带有 ODBC SQL Server 驱动程序的 PDO。如果我在 SQL Server Management Studio 中列出该表的内容,我可以看到所有行而不会出现错误。所以这个错误一定是新驱动的,但我不知道如何配置它。
标签: php sql-server pdo odbc