[PHP-users 25655] Re: DBの文字エンコード (Summary)
KATO Kanryu
kanryu @ aurora.dti.ne.jp
2005年 5月 23日 (月) 04:02:15 JST
加藤歓隆です。
単純なことだけに、いろいろなやり方があるようで参考になります。
私はソースコードが単純で使い回せることを好むので、
1でやってみることにします。
1.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問題でハマリます。
2.ソースコードで解決する
> 安藤です。
> PEAR::DBを継承したクラスを作り、fetchrowやqueryあたりに手を加え
> て吸収するのはどうでしょうか。
3.1と2の中間
1の設定値をob_start()で動的に設定する
> 小山です。
> 私が ob_start() を明示的に呼び出すのを好むのは、まれに出力にコード変
> 換をかませたくない場合があるからです。システム側で output_buffering を
> 指定してしまうとそれをキャンセルするのは結構大変なので、デフォルトはバッ
> ファリングなしにしておいて、スクリプト側で明示的にバッファリング + コー
> ド変換を行っています。
PHP-users メーリングリストの案内