0

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

前任。当我写名称 (1.5) 时,即得到名称 ( 1.5 & # 4 1 ; ,即(不带空格)。但是当我从数据库中获取时,一切都很好,名称 (1.5),即显示。

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

这是配置。数据库配置:

$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 语句中并返回值。

4

2 回答 2

1

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

我用过

 $newname = html_entity_decode($oldname);

然后插入 $newname。奇迹般有效。

于 2012-11-20T06:41:19.440 回答
0

CodeIgniter (2.1.3) 不处理“mssql”驱动程序的字符集。你可以这样设置:

@ini_set('mssql.charset', 'utf-8');
于 2012-11-19T09:12:00.393 回答