| maverick の記述を引用: |
| 正確にはこの追加はもう少し下のifの中でもいいとは思いますが |
私もそう思います。maverickさんが言うようにMySQL4.1.x, 5.0.xに対応しておくのはかなり重要なことだと思うので私なりに色々調べてみました。
結果として、
#
#-----[ OPEN ]------------------------------------------
#
db/mysql4.php
#
#-----[ FIND ]------------------------------------------
#
$this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server, $this->user, $this->password) : mysql_connect($this->server, $this->user, $this->password);
if( $this->db_connect_id )
{
#
#-----[ AFTER, ADD ]------------------------------------------
#
mysql_query("SET NAMES 'ujis'", $this->db_connect_id);
|
とするのが一番ベストなやり方かなぁと思います。(もっと適切な変更方法があるかもしれませんが・・・)
参考にしたのは
ここ(英語リファレンスマニュアル)と
ここ(日本語リファレンスマニュアル)です
英語マニュアルと日本語マニュアルは内容がちょっと違っていて、英語マニュアルの方を信じるなら
SET CHARACTER SET ではなく SET NAMES を使う方が良いようです。
SET NAMES 'ujis' を最初に命令しておけば、
SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'ujis' tells the server “future incoming messages from this client are in character set ujis.” It also specifies the character set that the server should use for sending results back to the client. (For example, it indicates what character set to use for column values if you use a SELECT statement.)
なんだそうです。MySQLサーバとクライアント間の処理を全部ujisで処理してくれるみたいですね。
さらにほかのページを読んだ結果、
collationに関してはMySQLサーバの、ujisに対するdefault collation( my.ini(cnf)で設定していなければujis_japanese_ciかujis_binのどっちかだと思います )を使うみたいです。collationは主にSELECT ~ ORDER ~ の表示順などに関係するらしく、MySQLサーバーの方で(latin1_binとかの)ujisに関係ないやつをmy.ini(cnf)でデフォルトに設定してさえいなければ文字化けは起こらないと思われます。ぶっちゃけた話、collationは文字化けとは関係ないと思われます。故に、SET NAMES 'ujis' を最初に命令しておけば、MySQLの設定がどんな状態でも文字化けは起こらないと思います(間違ってたらスイマセン)。