気づいたらMODXの
0.9.6.2-rc1がリリースされているじゃないですか。まだrc1なのですが、
新機能が気になるのでちょっと使ってみました。
インストールも終わって、さていじろうとしたときに問題発生。なんだか文字化けしてるっぽい。しかも文字化けっぷりが中途半端。ドキュメントを作成すると日本語が全部「????」変わって登録されるけど、どのドキュメントを編集すると今度は文字化けせず登録される。
…ナニコレ?
新規と編集の違いはSQL文ではINSERTとUPDATEの違いくらいしか思いつかない。それ以外はほぼ同じロジックを通ってるみみたいだし。
というかShift_JIS仕様で構築されているMySQLを何とかしたい。こいつのデフォルト文字コードがUTF-8だったら、文字化けも起こらない…はず。しかもShift_JISで動いてる別のシステムがあるため、my.cnfもいじれない。
仕方ないのでMODx側で何とかするしかない。
と、言うわけで以下の部分を修正してみた(本当はSET NAMESじゃなくてmysql_set_charset()が推奨されてるけどネ…大人の事情って事でorz)。
ちなみに左側に+って書いてる行を上に書いてる行のすぐ下に追加しています。もちろん+は書く必要ありません。
./manager/actions/bkmanager.static.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./manager/media/browser/mcpuk/connectors/php/config.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./manager/media/ImageEditor/config.inc.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./manager/processors/login.processor.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./manager/includes/veriword.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./manager/includes/extenders/dbapi.mysql.class.inc.php
@mysql_query("SET CHARACTER SET {$charset}", $this->conn);
+@mysql_query("SET NAMES {$charset}",$this->conn);
./manager/index.php
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
+@mysql_query("SET NAMES {$database_connection_charset}");
./assets/plugins/tinymce303/tinymce.linklist.php
global $database_password;
+global $database_connection_charset;
上記と同じファイル。
mysql_select_db($dbase) or die('Could not select database');
+mysql_query("SET NAMES {$database_connection_charset}");
./manager/includes/document.parser.class.inc.php …いらないくさいけど念のため。
$this->db->connect();
+mysql_query("SET NAMES " . $this->config['modx_charset']);
…これで文字化けしなくなった。ちなみに
「SET NAMES」指定を「SET CHARACTER SET」の手前に書いた場合、文字化けが解消しなかった。ここで相当ハマった。
このあたりの、動作の詳細が良くわからない。。。MySQLって難しい。
もう、みんなUTF-8でいいじゃないですか…ねぇ。
そして肝心の新機能を試してみたのですが。これが動かねぇorz
なんか実装が中途半端っぽいので、ちょっといじらないとダメかな、これ。
…というか中途半端すぎる。さすがrc1バージョン。まだ作成中なのか。
作成日:2008/06/11 02:40:54