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