Cakephp Sqlserver编码

Cakephp Sqlserver编码,php,sql-server,cakephp,Php,Sql Server,Cakephp,这把我难住了。我正在尝试为Sqlserver连接设置编码,但所有尝试都失败了。我只有 错误:缺少或无法使用“Sqlserver”的数据库连接 连接。数据库服务器返回此错误: SQLSTATE[IMSSP]:为指定的编码无效 SQLSRV_ATTR_编码 我试图通过编码解决的原始错误是: 错误:SQLSTATE[IMSSP]:翻译查询字符串时出错 到UTF-16:目标中不存在Unicode字符的映射 多字节代码页 SQL版本是2008 R2 Cakephp版本:2.4.2 PHP版本:5.3.27

这把我难住了。我正在尝试为Sqlserver连接设置编码,但所有尝试都失败了。我只有

错误:缺少或无法使用“Sqlserver”的数据库连接 连接。
数据库服务器返回此错误: SQLSTATE[IMSSP]:为指定的编码无效 SQLSRV_ATTR_编码

我试图通过编码解决的原始错误是:

错误:SQLSTATE[IMSSP]:翻译查询字符串时出错 到UTF-16:目标中不存在Unicode字符的映射 多字节代码页

SQL版本是2008 R2
Cakephp版本:2.4.2

PHP版本:5.3.27

SQL 2008不支持仅限UTF-16的SQL 2012


MS SQL根本不支持UTF-8。

经过大量的尝试和错误后,这一功能可以正常工作:

public $default = array(
    'datasource'    => 'Database/Sqlserver',
    'persistent'    => false,
    'host'      => 'localhost',
    'login'     => 'sa',
    'password'  => 'password',
    'database'  => 'SchedulingDatabase',
    'encoding'  => PDO::SQLSRV_ENCODING_UTF8
);

用CakePHP3.0尝试了一下,似乎效果不错

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Sqlserver',
        'persistent' => false,
        'host' => 'localhost',
        'port' => '1433', //using this port
        'username' => 'sa',
        'password' => 'password',
        'database' => 'cake_bookmarks',
        'encoding' => PDO::SQLSRV_ENCODING_UTF8,
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'quoteIdentifiers' => false,
    ]

这似乎是SQL Server中的一个错误,请尝试改用utf-8,看看问题是否仍然存在。很遗憾;u;,使用mysql或postgres。感谢您的帮助!