[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 メーリングリストの案内