Top > XOOPS > MySQL5.0.xでの文字化け対策

XOOPSのソース内でSET NAMES ujisを指定しないためUTF8のcharacter_setであるMySQL5.0.xで文字化けする。

mysql>show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

上記の環境では確実に文字化けする。

対処法は以下に記しておきます。

XOOPS_ROOT_Directory/class/database/mysqldatabase.phpというファイルの
88行目付近に下記を追加します。

   // MySQL>=4.1above///////////////////////////////
       mysql_query("SET NAMES ujis", $this->conn);
   ////////////////////////////////////////////////

mysqldatabase.phpの77行目から92行目はこんな感じになっています。

       if (!$this->conn) {
           $this->logger->addQuery('', $this->error(), $this->errno());
           return false;
       }
       if($selectdb != false){
           if (!mysql_select_db(XOOPS_DB_NAME)) {
               $this->logger->addQuery('', $this->error(), $this->errno());
               return false;
           }
       }
   // MySQL>=4.1above///////////////////////////////
       mysql_query("SET NAMES ujis", $this->conn);
   ////////////////////////////////////////////////
       return true;
   }


リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2008-03-10 (月) 01:09:50 (4152d)