createdb hoge;
output_handler = mb_output_handler
mbstring.encoding_translation = On
mbstring.language = Japanese
mbstring.internal_encoding = 'EUC-JP'
mbstring.script_encoding = 'ASCII,SJIS,EUC-JP,JIS,UTF-8'
mbstring.http_input = 'ASCII,SJIS,EUC-JP,JIS,UTF-8'
mbstring.http_output = 'SJIS'
mbstring.detect_order = 'ASCII,SJIS,EUC-JP,JIS,UTF-8'
mbstring.substitute_character = none
でも、Ajax するからには、UNICODE で統一したい。
ちょっと試した結果、
createdb hoge;
psql> SET client_encoding TO 'UNICODE';
output_handler = none
mbstring.encoding_translation = Off
mbstring.language = neutral
mbstring.internal_encoding = 'UTF-8'
mbstring.script_encoding = auto
mbstring.http_input = auto
mbstring.http_output = 'UTF-8'
mbstring.detect_order = auto
mbstring.substitute_character = none
上記設定は、
「DB hoge のデータ自体は EUC-JP だけど、
クライアントとのやり取りは UNICODE で」
というもの。
PostgreSQL:
initdb --encoding=EUC_JP;
createdb --encoding=UNICODE hoge;
環境変数 PGCLIENTENCODING に EUC_JP を設定。
PHP:
output_buffering = Off
output_handler = none
mbstring.encoding_translation = Off
mbstring.language = neutral
mbstring.internal_encoding = 'UTF-8'
mbstring.script_encoding = auto
mbstring.http_input = auto
mbstring.http_output = 'UTF-8'
mbstring.detect_order = auto
mbstring.substitute_character = none
この設定は、
「DB hoge のデータ自体は UNICODE だけど、
コンソールで psql とかする場合は EUC_JP で」
というもの。
PostgreSQL のメインのクライアントは psql ではなくて PHP なので、
PostgreSQL - PHP 間には、変換処理をなるべく入れないほうが良いだろうと。
「DB hoge のデータ自体は EUC-JP だけど、
クライアントとのやり取りは UNICODE で」
というもの。
後日、以下のように設定を変更した。
createdb --encoding=UNICODE hoge;
環境変数 PGCLIENTENCODING に EUC_JP を設定。
output_handler = none
mbstring.encoding_translation = Off
mbstring.language = neutral
mbstring.internal_encoding = 'UTF-8'
mbstring.script_encoding = auto
mbstring.http_input = auto
mbstring.http_output = 'UTF-8'
mbstring.detect_order = auto
mbstring.substitute_character = none
「DB hoge のデータ自体は UNICODE だけど、
コンソールで psql とかする場合は EUC_JP で」
というもの。
PostgreSQL のメインのクライアントは psql ではなくて PHP なので、
PostgreSQL - PHP 間には、変換処理をなるべく入れないほうが良いだろうと。