文字化け対策

MODx はインストール直後の状態では日本語対応が十分ではないようで、データベースへの登録や呼び出しで文字化けが発生することがあります。

使用方法によっては支障が出ないまま運用が可能なこともありますが、フッとしたとき ( 例えば、環境移行のためのバックアップだったり、AjaxSearch などの Snippet の利用だったり、) に支障をきたし、最悪、ページやデータがフッ飛ぶといったことにもなりかねません。

ということで、インストール直後に以下の設定をしておくことが better です。 

 

1. データベースを UTF-8 で作成する

MODx で使用するデータベースは UTF-8 ( utf8-general-ci ) で作成する。

2-a. MODx の設定ファイルを修正する

\modx\manager\includes にある config.inc.php をエディタで開き、データベースの文字コードを記述します。

1) 9 行目をコメントアウトし、その直下に 9 行目の内容をコピーする。
2) 新しくできた 10 行目の最後の '' を 'utf8' に修正する。

<?php
/**
 *    MODx Configuration file
 */
$database_type = 'mysql';
$database_server = 'localhost';
$database_user = '*****';
$database_password = '*****';
//$database_connection_charset = '';
$database_connection_charset = 'utf8';
$dbase = '`modx`';
$table_prefix = 'modx_';
~~以下省略~~

2-b. MODx の特定の部位を修正する

\modx\manager にある index.php をエディタで開き、データベースの文字コードを記述します。

140 行目付近に以下の行を追加する

~~途中省略~~

// connect to the database
if(@!$modxDBConn = mysql_connect($database_server, $database_user, $database_password)) {
    die("<h2>Failed to create the database connection!</h2>. Please run the MODx <a href='../install'>install utility</a>");
} else {
    mysql_select_db($dbase);
    @mysql_query("SET CHARACTER SET {$database_connection_charset}");
}
@mysql_query("SET CHARACTER SET utf8");

~~以下省略~~


\modx\manager\includes\extenders にある dbapi.mysql.class.inc.php をエディタで開き、データベースの文字コードを記述します。

90 行目付近に以下の行を追加する

~~途中省略~~

if (!$this->conn = ($persist ? mysql_pconnect($host, $uid, $pwd) : mysql_connect($host, $uid, $pwd, true))) {
   $modx->messageQuit("Failed to create the database connection!");
   exit;
} else {
   mysql_query("SET NAMES utf8;");
   $dbase = str_replace('`', '', $dbase); // remove the `` chars

~~以下省略~~

※ 2 の作業については、2-a / 2-b どちらか一方の作業で大丈夫なようです。

自宅サーバーWebRing << 前 |ID=231 |次 >> 乱移動前後5表示サイト一覧