02/19/08

TYPO3 文字化け対策

うちの環境だけかもしれませんが、TYPO3のインストール後しばらく文字化けに悩まされました。
現象としては

・ページ内容を入力した時点では化けていない
・phpMyAdminでDB内を直接見ると化けている
・そのうちキャッシュがクリアされたのか、サイト全体が化ける

というものでした。その後

・管理画面でも化ける

という具合に何故か段階的に文字化けが広がっていきました。当然 TYPO3 側でも「forceCharaset」はutf-8に設定してあり、MySQLのデータベース・テーブル共にutf-8で作成してありました。

調査を続けた結果、MySQLサーバ内にはどうやらlatin1でデータが保存されているということが判明しました。これは、CentOSでMySQLをインストールした場合のデフォルト設定です。

Yet Another 仕事のツール「TYPO3の文字化けを解消」

によれば、MySQLサーバの設定を変える方法での対処法が載っていますが、本サイトが乗っているサーバには他のサイトも動いており、できれば変えたくありません。また、いろいろな環境でのシステム構築を考えた場合、ディストリビューションのデフォルト設定をいじるというのも主義に合いません。

そこで、悩んだ結果 TYPO3 の設定ファイルである

t3lib/config_default.php

を直接書き換えて、DB接続時の初期コマンドをつけ加える事にしました。

'setDBinit' => 'set NAMES utf8;'

これで、MySQLサーバがどのような設定であっても、TYPO3が接続するときには必ずutf8で接続するようになります。

おそらく、TYPO3 のオリジナル配布ファイルに手を加えずとも「typo3conf/localconf.php」に

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'set NAMES utf8';

と書き込む事で同様の効果があると思います。

 

※追記:普通に管理画面のインストールツールで変更できますね。(5: All Configurationにあります)

 


Contents