世の中はutfへ進んでいるようですが、現時点ではEUC-JPに決め打ちされているWebアプリもたくさんあって、環境づくりに悩まされていました。
たとえばXOOPSとOPEN PNEを同一のWebサーバで運用する場合、PHPのmbstring関係の設定をどうしたもんかと。
XOOPSは最近、UTF-8化に向かっているようですが、モジュールレベルでは作者の対応がなければ難しい部分もあるようです。
一方のOPEN PNEはUTF-8前提。
少し前ならEUC-JP固定であればほとんどのWebアプリを動かすことができましたが、ここ数年で状況が変わってきてしまいました。
最近ではUTF-8のものをEUC-JPに変換(またはその逆)したりして、とりあえずの対応をしていましたが、やっと自分なりの対応策がまとまったのでメモ。
「今頃そんなことやってんのか」とかいうツッコミはスルー。
もっと簡単でいい方法があれば教えていただきたいです。
1)とりあえず、php.iniでの設定はほとんど無効にする。
無効というか、「PHP、お前は触るな」という感じ。
mbstring.language = Japaneseこれ以外の「mbstring.internal_encoding」とか「mbstring.substitute_character」とかはコメントアウト。
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.func_overload = 0
mbstring.script_encoding = auto
2)apacheのmod_rewriteをオンにして、各アプリケーションのディレクトリで.htaccessを設定
たとえば
#AddDefaultCharset UTF-8とかしておくとUTF-8のアプリは動くようになりました。細かくチェックはしてないけど。
#php_value default_charset UTF-8
#php_value mbstring.language neutral
php_value mbstring.internal_encoding UTF-8
#php_value mbstring.http_input auto
#php_flag mbstring.encoding_translation Off
#php_value mbstring.detect_order UTF-8
#php_value mbstring.script_encoding UTF-8
#php_value output_handler none
httpd.confに直接書く、でもいいんですが、いちいちシステムにログインするのが面倒なので・・・


コメントする