vine-users ML アーカイブ



[vine-users:077023] MySQL の文字 化け対策について XOO PS

  • From: MAC <npo_suport@xxxxxxxxxxx>
  • Subject: [vine-users:077023] MySQL の文字 化け対策について XOO PS
  • Date: Sat, 9 Jun 2007 14:07:05 +0900 (JST)
Vine4.0で 「XOOPS」のコミュニティサイトを運営しておりま
したが、昨日、雷で停電となり、Linuxサーバが停止しました
。

Linuxサーバの電源スイッチから起動を掛けました。
そして、今まで問題なく運営されていた「XOOPS」のコミュニ
ティサイトにアクセスすると画面が真っ白で何も表示されなく
なりました。
XOOPS立ち上げ時にもこのような問題が生じました。
その時は以下のような処置で対策できました。

 xoopsをインストールする前に、/etc/my.cnfを編集
[mysqld]
skip-character-set-client-handshake →追記
MySQLの再起動

ソフトを作成して管理画面に入ったところ、あらゆるところで
文字化けが生じておりました。

そこで文字化け対策についていろいろ調べたのですがどれも対
策になりません。

そこでお聞きしたいのですが、この文字化けを直してページを
表示させるためにはどのようにすればよいのでしょうか?
宜しくお願いします。

以下のような対策方法を見つけたのですが、
mysqldatabase.phpのどの部分に挿入すればよいのかわかりま
せん。
ご教授お願い致します。

・方法2『クライアントの文字コードを明示的に指定する』
PHPコードの中でクライアントの文字コードを指定するクエリ
「SET NAMES &apos;ujis&apos;;」を発行します。
[例]/class/database/mysqldatabase.phpのconnectメソッドで
以下の一行を追加します。

mysql_query("SET NAMES &apos;ujis&apos;", $this->conn);


&apos;ujis&apos;はMySQLの文字コードで、EUC-JPに相当しま
す。
&apos;binary&apos;を指定しても文字コードの自動変換機能を
オフにすることはできますが、厳密には&apos;ujis&apos;を指
定するのが正しいと言えるでしょう。

いずれの方法にしてもデータベースの文字コードがujis(EUC-JP)
になっていることが前提です。

また、my.cnfには[mysql]グループや[client]グループでクラ
イアント側の文字コードを指定することもできますが、PHPはmy.cnf
を読みませんのでその指定は反映されません。

インストールしているものは以下の通りです。
[root@localhost root]# rpm -qa | grep MySQL
MySQL-client-5.0.27-0vl3
MySQL-shared-5.0.27-0vl3
MySQL-Max-5.0.27-0vl3
perl-DBD-MySQL-3.0007-0vl1
MySQL-devel-5.0.27-0vl3
MySQL-server-5.0.27-0vl3
[root@localhost root]# rpm -qa | grep mysql
php-mysql-4.4.4-0vl6
[root@localhost root]# rpm -qa | grep php
php-4.4.4-0vl6
php-apache2-4.4.4-0vl6
php-pear-4.4.4-0vl6
php-mysql-4.4.4-0vl6
[root@localhost root]#