Linux で mssql 2005 データベースへの codeigniter 接続の設定に問題があります。なんとか接続を確立できましたが、Codeigniter 関数によって返された/解析されたデータには、[ąężźćäöüß] のような分音記号がすべてありません。firebug では、それらは長方形内の疑問符に置き換えられ、メモ帳では黒いひし形に置き換えられます。例:
[2] => Array
(
[id] => *
[zid] => *
[keyid] => AEDF
[status] => A
[txt] => 20.000, je�eli > 50 lat + 15 lat sta�u
)
構成でたくさん遊んだ。
$db['loga']['hostname'] = '10.0.0.90:4113';
$db['loga']['username'] = 'user';
$db['loga']['password'] = 'password';
$db['loga']['database'] = 'TESTDB';
$db['loga']['dbdriver'] = 'mssql';
$db['loga']['dbprefix'] = '';
$db['loga']['pconnect'] = FALSE;
$db['loga']['db_debug'] = TRUE;
$db['loga']['cache_on'] = FALSE;
$db['loga']['cachedir'] = '';
$db['loga']['char_set'] = 'utf-8';
$db['loga']['dbcollat'] = 'Polish_CI_AS';
$db['loga']['swap_pre'] = '';
$db['loga']['autoinit'] = TRUE;
$db['loga']['stricton'] = FALSE;
/* End of file database.php */
データベース照合は Polish_CI_AS に設定されており、変更できません (cp1250)。CI データベース構成ファイルのすべてのパラメーターをどのように解釈するか、すでに混乱しています。$db['loga']['dbcollat'] はデータベースの照合を表し、char_set は... もうわかりません :)
最終的に、データは UTF-8 であることが期待されます (ブラウザで適切に表示される可能性があります)。
また、宿題をして、次を使用してみました: @ini_set('mssql.charset', 'utf-8');
私にとってはうまくいきませんでした - 結果に目に見える影響はありません。また、freeTDS 構成ファイルをいじろうとしました ( 'client charset = UTF-8' を設定) - それでも結果はありません。
私は Linux OS の基本しか知らないので、何か見落としているかもしれません。php.ini ファイルで、php が freeTDS でコンパイルされた場合にのみ mssql.charset param が意図したとおりに機能することがわかりました。そうだとしか思えない。
とにかく、スクリプトを Windows Server で実行している間 (および sqlsrv ドライバーを使用している間)、スクリプトに問題はありません。
解決策を見つけるための提案はありますか? 私が理解していないこと、または正しく理解していないことは何ですか?
ありがとう