私が抱えている問題は、データベースからデータを取得するときはすべて問題ないということですが、データベースに特別な記号を使用してデータを書き込むと、特別な記号がコード化されます。
元。名前(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ステートメントに入れて、値を返します。