[pgsql-jp: 30776] Re: 漢字3 とは
MORIYAMA Masayuki
msyk @ mtg.biglobe.ne.jp
2003年 8月 13日 (水) 19:35:06 JST
森山です。
At Wed, 13 Aug 2003 12:34:21 +0900,
Yumiko Ono さん:
> (1)PostgreSQL(EUC_JPで設定)や、
> (2)PostgreSQL ODBC Driver 07.01.0006 日本語版
> は、これらの文字に対応しているのか?
> というのが知りたかったのです。
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/
を見ると、PostgreSQL ODBC Driver 07.01.0006 日本語版 は、「漢字
コード変換仕様はOSF/JVC推奨の仕様に準拠」とありますから、これが
本当であれば、EUC_JP で、IBM拡張文字に対応しているハズです。
(実際に確認したわけではないので断定は避けます。)
日本語 EUC とシフト JIS との間のコード変換規則
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
Unicodeとユーザ定義文字・ベンダ定義文字に関する問題点と解決策
http://www.opengroup.or.jp/jvc/cde/ucs-conv.html
# ちなみに、Widnows 用ブラウザの EUC-JP は、上記ページで説明され
# ている eucJP-open(eucJP-ms) とは別物で互換性はないので注意が必
# 要です。
> いわゆる漢字3の文字についての現象は以下です。
> ・PHPから入力 → PHPで表示:問題なし
> ・PHPから入力 → psqlで表示:問題なし
psql で表示とありますが、文字コードは何で表示しましたか?
EUC の場合、端末が PostgreSQL の EUC_JP (eucJP-open) に対応してお
らず、正しく表示できない可能性が大です。
ちなみに、TeraTerm の EUC では eucJP-open の 13区(NEC特殊文字)
以外の機種依存文字を正しく表示できません。TeraTerm の EUC で IBM
拡張文字 (NEC選定IBM拡張文字) が正しく表示できてしまっている場合
は、PostgreSQL の変換で期待する変換が行われず、他のソフトで
PostgreSQL に UTF-8 や SJIS でアクセスして表示させると文字化けし
ます。
> ・PHPから入力 → (2)経由でACCESS で表示:文字化け、もしくは「・」
> ・ACCESSから入力 → PHPで表示:文字化け(他のコードに変換されている)
> ・ACCESSから入力 → psqlで表示:文字化け(他のコードに変換されている)
> ・ACCESSから入力 → ACCESSで表示:問題なし
PHP では、eucJP-win や Windows-31J (SJIS-win) を使うようにしない
と、PostgreSQL の文字コード(エンコード)変換との齟齬を生じてしま
います。
PHP + PostgreSQL という組み合わせで、機種依存文字も扱う場合は
PHP は、次のような設定にする必要があると思われます。
PHP 内部処理コード(スクリプトのコード) を eucJP-win
PHP の表示コードを Windows-31J (← eucJP-win は NG)
php.ini の [mbstring] 設定例 (以前、テストした時の設定)
[mbstring]
default_charset = Shift_JIS
output_buffering = On
output_handler = mb_output_handler
mbstring.language = Japanese
mbstring.internal_encoding = eucJP-win
mbstring.http_output = Windows-31J
mbstring.http_input = ASCII,JIS,Windows-31J,UTF-8,EUC-JP
mbstring.detect_order = ASCII,JIS,Windows-31J,UTF-8,EUC-JP
mbstring.substitute_character = none
※Windows-31J とは、Windows のシフトJIS の事で、いわゆる機種依
存文字を含んだものを言います。
‖ 森山 将之 (MORIYAMA, Masayuki)
‖ E-Mail: msyk @ mtg.biglobe.ne.jp
pgsql-jp メーリングリストの案内