0

私が抱えている問題は、データベースからデータを取得するときはすべて問題ないということですが、データベースに特別な記号を使用してデータを書き込むと、特別な記号がコード化されます。

元。名前(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ステートメントに入れて、値を返します。

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 に答える