CodeIgniter 2.1.3和mssql 2008排序规则

时间:2012-11-19 08:11:16

标签: php database codeigniter collation

然后我遇到的问题是当我从数据库中获取数据时一切都很好,但是当我用特殊符号向数据库写入数据时,我会得到特殊的符号编码。

离。当我写名称(1.5),即时,我得到名称(1.5&#4 1;,即(没有空格)。但是当我从数据库基础上获取所有内容时很好,名称(1.5),即显示

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

这是配置。 database.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语句中并返回值。

2 个答案:

答案 0 :(得分:1)

如果有人遇到同样的问题,这就是解决方案:

我用过

 $newname = html_entity_decode($oldname);

然后插入$ newname。像魅力一样。

答案 1 :(得分:0)

CodeIgniter(2.1.3)不处理'mssql'驱动程序的字符集。您可以设置如下:

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