zencart の文字コードをUTF-8にする

最近のレンタルサーバーの仕様では、zencartは文字コードの問題にぶつかります。
ファイルの文字コードがUTF-8なのにHTMLではEUC-JPが指定されています。
これは文字コード指定を「デフォルトで指定しない」という設定のサーバーでは色々問題が発生するので、これを回避します。

文字コード変換
文字コード変更ツールなどを使用して、「.php」「.sql」「.txt」のファイルの文字コードを、UTF-8に変更します。
僕は、簡単な変換スクリプトを書いて実施しました。
(参考 ZenCart UTF-8化してイントール、の巻。)

まず、ファイル全てをUTF-8にします。
[lam@centos]# vi cnv2utf8.sh
#!/bin/sh
nkf -w $1 > TEMP
mv -f TEMP $1

[lam@centos]# find zen-cart -name ‘*.php’ -exec ./cnv2utf8.sh \{\} \;
[lam@centos]# find zen-cart -name ‘*.sql’ -exec ./cnv2utf8.sh \{\} \;
[lam@centos]# find zen-cart -name ‘*.txt’ -exec ./cnv2utf8.sh \{\} \;

設定変更
以下のファイルの「EUC-JP」の部分を「UTF-8」に書き換え
[lam@centos]# vi zen-cart/admin/includes/languages/japanese.php
[lam@centos]# vi zen-cart/includes/languages/japanese.php
[lam@centos]# vi zen-cart/zc_install/includes/languages/japanese.php

HTMLAREAの文字コードを変更
zen-cart/htmlarea/lang内の、
ja.js を削除して、(ja-euc.jsと同じものです)
ja-utf8.js をコピーして、ja.jsにリネーム。

phpの内部文字コードを変更
zen-cartのディレクトリに.htaccessを作成して、
php_value mbstring.internal_encoding UTF-8

/includes/classes/db/mysql/query_factory.php の47行目付近に
文字コードを指定します。

      if (@mysql_select_db($zf_database, $this->link)) {
        if (version_compare(mysql_get_server_info(), '4.1.0', '>=')) {mysql_query('SET NAMES "utf8"', $this->link);}
        $this->db_connected = true;
        return true;
      } else {

コメントを残す