XOOPS-UTF-8化

さくらインターネットのサーバーの設定を、php.iniをいじってUTF-8化しました。

Sponsored Link

後々のAjaxやphpの動作環境を整えるにあたり、UTF-8に対応しておいたほうがいいと思いまして。
WordPressもUTF-8対応ですし。

ですが、さくらインターネットにインストールしていたXOOPSがEUC-JPで、文字化けを起こしてしまいました。

UTF-8化後に、新規にWordPressもインストールしていたので、もう元には戻れなく・・・

UTF-8化への道のり

XOOPSはUTF-8に対応していなかったので、自分でUTF-8化しました。
元々インストールしていたのは、開発が終了した2.0.16a JPのバージョンだったので、
大幅アップグレード?したXOOPS Cube Legacy 2.1 RC2を1からインストールしてUTF-8に。

サーバーのphp.iniの設定

mbstring.internal_encoding = UTF-8
default_charset = UTF-8

に変更

ファイルをUTF-8化する

html/install/language/japanese(1からインストールする場合)
html/language/japanese

html/modules/モジュール名/language/japanese
xoops_trust_path/modules/モジュール名/language/japanese(altsysを導入している方)
xoops_trust_path/libs/altsys/language/japanese(altsysを導入している方)
html/themes/

モジュールに日本語が入っている場合(テンプレートやコア部分に日本語が埋め込まれている場合)
html/modules/モジュール名/
html/modules/モジュール名/templates

上記をUTF-8Nに変換する。
ここで注意したいのは、UTF-8とUTF-8Nの二つの種類がある。
ここでUTF-8を選んでしまうと、サイトの文字が大きくなったり、文字化けする場合があるので、必ずUTF-8Nを選択する。

一括置換に役立ったソフト
Vecter一括置換ソフト一覧

その中でのオススメソフト
KanjiTranslator
UTF-8Nに置換する場合は、変換先文字コードを「UTF-8(BOM無し)」を選択すること。

ファイルの書き換え

html/modules/legacy/language/japanese/global.php(Legacy 2.1 RC2)
html/language/japanese/global.php(2.0.16a JP)
上記のファイルの

define(‘_CHARSET’, ‘EUC-JP’);

  ↓

define(‘_CHARSET’, ‘UTF-8’);

その他モジュールのMETAのcharsetをEUC-JPからUTF-8へ。
Dreamweaverなどで、フォルダ後と検索すると見つけやすい。
ただし、一括置換は辞めておいたほうがよいです。

UTF-8化で注意すること。

XOOPSを既に構築していて、データベースに記事など様々な情報がはいっている場合、UTF-8化はしない方がいいでしょう。
データベースにバックアップを取ってUTF-8化、その後インポートしようとしても、
データベースの方がその情報をEUC-JPで文字コードを読み込んでいるので、文字化けは直りません。

UTF-8化後に書く記事には文字化けは起こりませんので、まだデータ量が少ない人は、書き換えれば直ると思います。
たとえば、文字化けしている部分を、ブラウザ(FireFoxの場合)の「表示→文字エンコーディング→EJC-JP」にして、元のデータの文字をコピペ。
再読み込みして、文字エンコーディングをUTF-8にしたら、ペーストして保存する。

かなり大雑把にやってしまいましたが、取りあえず成功したみたいです。
一部モジュールで文字化けしていますが、モジュールのテンプレートをUTF-8Nにすれば直ると思います。

※必ず、テスト環境を作って、確認してから移行したほうがよいです。

参考サイト一覧

Xoops Users Group Japan
Webウェブデザインレッスン

Sponsored Link