WordPress 新規投稿で文字化けする件 ワードプレス
2007年11月15日 テーマ:ICT屋ameblo日記
WordPressME2.23をインストールしました。インストール自体は問題無く完了したのですが、新規記事を投稿した際、記事が文字化けしました。
原因:mysqlのデフォルトのエンコーディングが、S_JISになっている。 WordPressはUTF8で稼動している。このエンコーディング変換の処理がうまくいってない。
実際に画面やページはUTF8で問題なく表示されているのですが、エントリー投稿時にmySqlのDBには、SJISで書き込まれています。それを読み出した際に表示上で文字化けが発生しているわけです。
そもそもmySql自体が別のコンテンツにて使用されているため、エンコーディングをUTF8に変更するわけにもいかず、その対処方法を模索しました。
さらに環境的には、VPSサーバのため、ヴァーチャルホストが幾つか存在し、そのそれぞれのホストで共通のMYSQLを使用しています。
検索してみると、wp-includes/wp-db.php のソースを書き換える件が数本ヒットします。
if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
$this->query("SET NAMES utf8'$this->charset'");
@mysql_query("SET NAMES utf8", $this->dbh);//←これを追加する
$this->select($dbname);
}
これでも動作的には解決しませんでした。
そこで結局対処できた方法は、
.htaccessファイルを作成し、
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″
の2行を書き込んでhtdocsのrootにアップしました。これで一応文字化けは解消しました。
同一ホストでこれを行うと、mysqlをすでに使用している他のコンテンツで文字化けを起こすと思いますので注意してください。今回は該当バーチャルホストではまだmysqlを利用していなかったため、この対処が有効になりました。ので、当ホストで別機能でmysqlを利用した際には、UTF8にて利用するようにしなければならないわけです。
原因:mysqlのデフォルトのエンコーディングが、S_JISになっている。 WordPressはUTF8で稼動している。このエンコーディング変換の処理がうまくいってない。
実際に画面やページはUTF8で問題なく表示されているのですが、エントリー投稿時にmySqlのDBには、SJISで書き込まれています。それを読み出した際に表示上で文字化けが発生しているわけです。
そもそもmySql自体が別のコンテンツにて使用されているため、エンコーディングをUTF8に変更するわけにもいかず、その対処方法を模索しました。
さらに環境的には、VPSサーバのため、ヴァーチャルホストが幾つか存在し、そのそれぞれのホストで共通のMYSQLを使用しています。
検索してみると、wp-includes/wp-db.php のソースを書き換える件が数本ヒットします。
if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
$this->query("SET NAMES utf8'$this->charset'");
@mysql_query("SET NAMES utf8", $this->dbh);//←これを追加する
$this->select($dbname);
}
これでも動作的には解決しませんでした。
そこで結局対処できた方法は、
.htaccessファイルを作成し、
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″
の2行を書き込んでhtdocsのrootにアップしました。これで一応文字化けは解消しました。
同一ホストでこれを行うと、mysqlをすでに使用している他のコンテンツで文字化けを起こすと思いますので注意してください。今回は該当バーチャルホストではまだmysqlを利用していなかったため、この対処が有効になりました。ので、当ホストで別機能でmysqlを利用した際には、UTF8にて利用するようにしなければならないわけです。







