我在 linux 上设置与 mssql 2005 数据库的 codeigniter 连接时遇到问题。我设法建立了连接,但 Codeigniter 函数返回/解析的数据缺少所有变音符号,如 [ąężźćäöüß]。在萤火虫中,它们被矩形内的问号替换,在记事本中被黑色菱形替换。例子:
[2] => Array
(
[id] => *
[zid] => *
[keyid] => AEDF
[status] => A
[txt] => 20.000, je�eli > 50 lat + 15 lat sta�u
)
我玩了很多配置。
$db['loga']['hostname'] = '10.0.0.90:4113';
$db['loga']['username'] = 'user';
$db['loga']['password'] = 'password';
$db['loga']['database'] = 'TESTDB';
$db['loga']['dbdriver'] = 'mssql';
$db['loga']['dbprefix'] = '';
$db['loga']['pconnect'] = FALSE;
$db['loga']['db_debug'] = TRUE;
$db['loga']['cache_on'] = FALSE;
$db['loga']['cachedir'] = '';
$db['loga']['char_set'] = 'utf-8';
$db['loga']['dbcollat'] = 'Polish_CI_AS';
$db['loga']['swap_pre'] = '';
$db['loga']['autoinit'] = TRUE;
$db['loga']['stricton'] = FALSE;
/* End of file database.php */
数据库排序规则设置为 Polish_CI_AS - 并且无法更改 (cp1250)。我已经很困惑如何解释 CI 数据库配置文件中的所有参数。我假设 $db['loga']['dbcollat'] 代表数据库排序规则,其中 char_set 是......我不知道了:)
最后,我希望数据采用 UTF-8 格式(因此它们可以正确显示在浏览器中)。
我也做了功课并尝试使用:@ini_set('mssql.charset', 'utf-8');
这对我不起作用 - 对结果没有明显影响。我还试图弄乱 freeTDS 配置文件(设置 'client charset = UTF-8' ) - 仍然没有结果。
值得一提的是,我只知道 linux 操作系统的基础知识,所以我可能错过了一些东西。我在 php.ini 文件中发现 mssql.charset 参数仅在使用 freeTDS 编译 php 时才能按预期工作。我只能假设是这样。
无论如何,在 Windows Server 上运行脚本(并使用 sqlsrv 驱动程序)时,我对脚本没有任何问题。
有什么建议可以在哪里找到解决方案?什么我不理解或理解不正确?
谢谢