Kenichi Ando(Neo,Inc)
ando****@neo-n*****
2007年 12月 6日 (木) 22:55:51 JST
bossatamaです。 On Thu, 6 Dec 2007 13:35:23 +0900 Kenji <kenji****@club*****> wrote: > > 2.DB-driver.php > > MySQLの(utf-8/euc-jp/Shift-JIS)のセットネーム > > これどうしましょうね? > > 現状、データベースクラスは、オーバーライドできないんですね。 日本語版はコアに手入れをするという前提で考えました。(不定) 実装ついては、CakePHPを参考にしました。 また本家へ依頼済みです。(trunk覗きましたが未実装) http://codeigniter.com/forums/viewthread/61656/ まず、DB_Driver.php(line:95あたり) $defaults = array( 'hostname'=> '', 'username'=> '', 'password'=> '', 'database'=> '', 'conn_id'=> FALSE, 'dbdriver'=> 'mysql', 'dbprefix'=> '', 'port'=> '', 'pconnect'=> FALSE, 'db_debug'=> FALSE, 'cachedir'=> '', 'cache_on'=> FALSE, 'encoding'=> '' ); 'encoding'=> ''を新しく追加 DB_Driver.php(line:155あたり)に以下を挿入 if (isset($this->encoding) && $this->dbdriver == 'mysql') { $this->simple_query('SET NAMES '.$this->encoding); } config/database.phpに以下を新規追加 $db['default']['encoding'] = ""; 実際は、 $db['default']['encoding'] = "utf8";や $db['default']['encoding'] = "ujis";や $db['default']['encoding'] = "sjis"; などとする。 contorollers/内でデータベースをロードします。 普段どおりですと、 $this->load->database(); でも指定したエンコードが正常に動作します。 $config['hostname'] = "localhost"; $config['username'] = "test"; $config['password'] = "pass"; $config['database'] = "codeigniter"; $config['dbdriver'] = "mysql"; $config['dbprefix'] = ""; $config['pconnect'] = FALSE; $config['db_debug'] = TRUE; $config['active_r'] = TRUE; $config['encoding'] = "utf8"; $this->load->database($config); でも動きます。 こんなんでどうでしょうか? ['encoding'] というパラメータをCI内とマニュアルに 実装する。→日本語版の独自仕様 ※テストはselectでしか試していません //bossatama