Cakephp Sqlserver编码

时间:2013-11-18 08:01:59

标签: php sql-server cakephp

这让我很难过。我正在尝试为我的Sqlserver连接设置编码,而我尝试过的所有操作都失败了。我只得到

  

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

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

  

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

SQL版本是2008 R2 Cakephp版本:2.4.2
PHP版本:5.3.27

3 个答案:

答案 0 :(得分:10)

经过大量的反复试验后,这有效:

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

答案 1 :(得分:6)

尝试使用Cakephp 3.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,
    ]

答案 2 :(得分:0)

SQL 2008并不仅支持UTF-16 SQL 2012

http://msdn.microsoft.com/en-us/library/ms143726(v=sql.110).aspx

MS SQL完全不支持UTF-8。