1

我在 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 驱动程序)时,我对脚本没有任何问题。

有什么建议可以在哪里找到解决方案?什么我不理解或理解不正确?

谢谢

4

1 回答 1

0

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

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

这个对我有用。

于 2016-01-25T09:32:02.427 回答