mbstring関係の設定内容

| コメント(0) | トラックバック(0)

サーバが違うとPHPの初期設定も違うので(同じにして欲しいものだが…)同じプログラムでも文字化けを起こす。
mbstringの設定をしないといけない。

主な設定項目として
(参考ページ:http://manual.xwd.jp/ref.mbstring.html
※以前はPHPマニュアルにもこの記述が載っていたのだが、一新されてから分からなくなった。

mbstring.detect_order:文字エンコーディングの検出順序(no value)
mbstring.encoding_translation:入力されるHTTPクエリに関して内部エンコーディングへの変換を行うか?(Off)
mbstring.func_overload:シングルバイト対応の関数をmbstring関数の対応する関数でオーバーロードするか?(0)
mbstring.http_input:HTTP入力文字のエンコーディング(pass)
mbstring.http_output:HTTP出力文字のエンコーディング(pass)
mbstring.internal_encoding:内部文字のエンコーディング(no value)
mbstring.language:mbstringで使用する言語(neutral)
mbstring.substitute_character:無効な文字を代替する文字(no value)

()内はウチのサーバの設定内容

この設定だと、言語設定を日本語にすれば、問題なく動作します。
日本語の設定

mb_language('Japanese');

UTF-8でコードを書けば、入力文字もUTF-8、出力文字もUTF-8です。携帯サイトはSJISで書くので、それはSmartyのテンプレートをSJISで書いて、表示文字だけUTF-8からSJISに変換するだけでOK。

それでも、他のサーバでも同じように動かすために、最初にmbstringの設定をしてしまう。

mb_language('Japanese');
ini_set('mbstring.detect_order', 'auto');
ini_set('mbstring.encoding_translation',0);
ini_set('mbstring.http_input' , 'auto');
ini_set('mbstring.http_output' , 'pass');
ini_set('mbstring.internal_encoding', 'UTF-8');
ini_set('mbstring.script_encoding' , 'UTF-8');
ini_set('mbstring.substitute_character', 'none');

最近使った、ラビットサイトは、内部エンコーディングと出力文字のエンコーディングがEUC-JPです。
HTMLもPHPもDBも全てEUC-JPなら問題なしですが、UTF-8だと、文字が化け化けです。

この場合、上記の設定をPHPから行っても、どういうわけか、encoding_translationが1のまま(入力文字を内部エンコードに変換)でした。.httaccessでPHPの設定を行ったが、これも効かず。
幸いにして、php.iniの変更が可能だったので、全ての設定をphp.iniで行った。

変更内容は、

mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.detect_order = auto
mbstring.substitute_character = none;

mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.internal_encoding = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none;

に。

トラックバック(0)

トラックバックURL: http://www.karakuriya.biz/mt/mt-tb.cgi/707

コメントする

ウェブページ

Powered by Movable Type 4.261

このブログ記事について

このページは、H.Imaiが2008年7月 5日 16:42に書いたブログ記事です。

ひとつ前のブログ記事は「smartのバッテリー」です。

次のブログ記事は「人足」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。