
Mysql4.1以降は、PHPとの接続時に文字コードの自動変換機能の為文字化けする場合があります。
WordpressとNucleusで文字化けが発生した際にコアファイルを修正します。
Mysql4.1以上の文字コードの設定
最近仕事でもCMSツールを使ってサイト構築することがあります。
会社で使っているサーバーがMysql4.1なのですが、Mysql4.1以上だと、普通にインストールするとデーターベース側が文字化けするという問題が出てきます。
なぜなら、Mysql4.1以降は、PHPとの接続時に文字コードの自動変換機能が働くので、サーバー側の文字コードを勝手に変換してしまうんです。
サーバー側に文字コードが指定されていない場合、「laten1」などで出力されてしまうので、コアファイルを書き換えてエンコーディングを発行します。
Nucleusの設定 (nucleus3.3)
nucleus/lib/globalfunctions.php - 488行目に次の1行を挿入
$rtn = mysql_query("SET NAMES utf8" , $MYSQL_CONN);
nucleus/lib/globalfunctions.php
function sql_connect() {
global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN;
$MYSQL_CONN = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or startUpError('Could not connect to MySQL database.', 'Connect Error');
mysql_select_db($MYSQL_DATABASE) or startUpError('Could not select database: ' . mysql_error() . '', 'Connect Error');
$rtn = mysql_query("SET NAMES utf8" , $MYSQL_CONN);
return $MYSQL_CONN;
}
07/09/14 訂正 - 正常動作確認しました。
Wordpressの設定 (Wordpress ME2.2.3)
07/10/26 修正 - 2.1.3から最新版に修正しました。
wp-includes/wp-db.php - 78行目に次の1行を挿入
mysql_query("SET NAMES utf8", $this->dbh);
wp-includes/wp-db.php
function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost);
}
function __construct($dbuser, $dbpassword, $dbname, $dbhost) {
register_shutdown_function(array(&$this, "__destruct"));
/* .........略 */
mysql_query("SET NAMES utf8",$this->dbh);
$this->select($dbname);
}
これで文字化けが解消されました。
文字コードがUTF-8以外の場合は、ujis,eucに書き換えて下さい。

