[PHP-users 25652] Re: DBの文字エンコード
Tomoyuki Asakawa
tom @ asakawa.ne.jp
2005年 5月 22日 (日) 16:36:10 JST
あさかわ
> DBがEUC-JPで動いているときに
> 出力するHTMLがShift-JISだと、どこかの段階で
> DBの出力を文字コード変換してやる必要があります。
> みなさんはどういうやり方で文字コード変換をしているのでしょうか。
PHP.iniの設定で,行う「べき」だと思います。
理由は、プログラム自身が、コードの事を極力意識するべきではない
(プログラマが知ってるべきなのは確かですが)
まず、DBのコードがEUCなら
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
とします。
HTTPの出力をSJISにしたい場合は
mbstring.encoding_translation = On
output_buffering = On
output_handler = mb_output_handler
mbstring.http_output = Shift_JIS
とすれば、すべてのhttp出力をSJISにしてくれます。
PHPプログラムでは、コード変換を、何も考える必要はありません。
ただし。
PHPのソースをSJISで書いている場合は
mbstring.script_encoding = Shift_JIS
とする必要があります。
(internalencodingと同じ場合は未指定でいい)
#これを、忘れると、2バイト目のコードが5cH問題でハマリます。
PHP-users メーリングリストの案内