CodeIgniter 2.1.3 和 mssql 2008 排序规则



那么我遇到的问题是,当我从数据库中获取数据时,一切都很好,但是当我使用特殊符号将数据写入数据库时,我得到了特殊符号的编码。

前任。当我写名字(1.5)时,即我得到名字(1.5和#4 1;,即(没有空格)。但是当我从数据库库获得时,一切都很好,并且显示了名称(1.5),即显示。

问题是我使用特殊符号搜索不起作用。

以下是配置。数据库.config:

$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = '10.87.4.147';
$db['default']['username'] = 'sa';
$db['default']['password'] = 'Q!w2e3r4';
$db['default']['database'] = 'rrr';
$db['default']['dbdriver'] = 'mssql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'latin1';
$db['default']['dbcollat'] = 'latin1_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

正如您已经注意到的那样,我的数据库排序规则SQL_Latin1_General_CP1_CI_AS

我尝试将值设置为:

$db[‘default’][‘char_set’] = ‘utf8’;
$db[‘default’][‘dbcollat’] = ‘utf8_general_ci’;

和:

$db[‘default’][‘char_set’] = ‘utf16’;
$db[‘default’][‘dbcollat’] = ‘utf16_general_ci’;

任何想法如何使用特殊符号写入数据或让我的搜索工作。搜索很简单,我得到字符串,把它放在 SQL LIKE 语句中并返回值。

如果有人会遇到同样的问题,以下是解决方案:

我用过

 $newname = html_entity_decode($oldname);

然后插入$newname。就像一个魅力。

CodeIgniter (2.1.3) 不处理"mssql"驱动程序的字符集。您可以像这样设置一个:

@ini_set('mssql.charset', 'utf-8');

最新更新