Codeigniter / linux / mssql 2005 - 没有本地字符(变音符号)

时间:2013-03-14 08:26:27

标签: sql-server codeigniter activerecord character-encoding collation

我在设置与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驱动程序)时,我的脚本没有问题。

有什么建议可以找到解决方案吗?我没有理解或理解不正确的内容?

由于

1 个答案:

答案 0 :(得分:0)

在Ubuntu上的/etc/freetds/freetds.conf中,我添加了这两行并重新加载Apache。

[global]
tds version = 8.0
client charset = UTF-8

它对我有用。