我在设置与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文件中发现,如果php是用freeTDS编译的,那么mssql.charset param只能按预期工作。我只能假设是这种情况。
无论如何,在Windows Server上运行脚本(并使用sqlsrv驱动程序)时,我的脚本没有问题。
有什么建议可以找到解决方案吗?我没有理解或理解不正确的内容?
由于
答案 0 :(得分:0)
在Ubuntu上的/etc/freetds/freetds.conf中,我添加了这两行并重新加载Apache。
[global]
tds version = 8.0
client charset = UTF-8
它对我有用。