那么我遇到的问题是,当我从数据库中获取数据时,一切都很好,但是当我使用特殊符号将数据写入数据库时,我得到了特殊符号的编码。
前任。当我写名字(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');