[pgsql-jp: 30780] Re: 漢字3 とは
Yumiko Ono
yumi @ pise.co.jp
2003年 8月 15日 (金) 14:50:13 JST
いつも遅レスな大野です。
>psql で表示とありますが、文字コードは何で表示しましたか?
>EUC の場合、端末が PostgreSQL の EUC_JP (eucJP-open) に対応してお
>らず、正しく表示できない可能性が大です。
>
>ちなみに、TeraTerm の EUC では eucJP-open の 13区(NEC特殊文字)
>以外の機種依存文字を正しく表示できません。TeraTerm の EUC で IBM
>拡張文字 (NEC選定IBM拡張文字) が正しく表示できてしまっている場合
>は、PostgreSQL の変換で期待する変換が行われず、他のソフトで
>PostgreSQL に UTF-8 や SJIS でアクセスして表示させると文字化けし
>ます。
ショック!そうだったのですか!!
TeraTermProを使用しています。
KANJI設定をEUCにしてちゃんと見えていたので、
DBにEUC_JPで入っていると思い込んでいました。
バイナリで表示してみたところ、
ACCESS から入力したものは、ちゃぁんと、正しいコードに変換されていました。
例)(SJIS)fae3 → (EUC)8fc3c9 「ソウという漢字」
つまり、
>> ・ACCESSから入力 → ACCESSで表示:問題なし
>> ・ACCESSから入力 → psqlで表示:文字化け(他のコードに変換されている)
↑これは正しく、
>> ・PHPから入力 → PHPで表示:問題なし
>> ・PHPから入力 → psqlで表示:問題なし
>> ・PHPから入力 → (2)経由でACCESS で表示:文字化け、もしくは「・」
>> ・ACCESSから入力 → PHPで表示:文字化け(他のコードに変換されている)
↑これは、PHPのmbstringの設定の問題
すっかりWindows側を疑ってしまった私。
みなさん本当にごめんなさい。
片岡さん、本当にごめんなさい。
># ちなみに、Widnows 用ブラウザの EUC-JP は、上記ページで説明され
># ている eucJP-open(eucJP-ms) とは別物で互換性はないので注意が必
># 要です。
これまたショック!IE 恐るべし。
> mbstring.internal_encoding = eucJP-win
> mbstring.http_output = Windows-31J
ここがミソですね。
> mbstring.http_input = ASCII,JIS,Windows-31J,UTF-8,EUC-JP
URL エンコードのからみで、悩んだことがあるのですが、
上記で問題なかったですか?
話題は、PHPのMLのほうに移ったほうがよいのかもしれません。
ちなみにphp.iniの設定は現在以下のとおりです。
default_charset = "EUC-JP"
mbstring.language = Japanes
mbstring.encoding_translation = On
mbstring.internal_encoding = EUC-JP
mbstring.http_input = "EUC-JP, eucJP-win, ASCII, JIS, UTF-8, SJIS"
mbstring.http_output = EUC-JP
mbstring.detect_order = "EUC-JP, eucJP-win, ASCII, JIS, UTF-8, SJIS"
mbstring.substitute_character = none
これもいろいろ悩んだ挙句の結果だったのですが、
全体の漢字の扱いについての設計が甘かった、です。
今度は、PHP側を見直してみます。
〔補足〕
コード変換についての資料の入手先
http://hp1.jonex.ne.jp/~nakajima.yasushi/
WINCODE
ibmext.txt … OSF/JVCによるIBM 拡張文字の日本語EUCへの変換表
//--------------------------------------
// 大野 由美子 / yumi @ pise.co.jp
//
// ピセ株式会社 システム技術グループ
// 〒105-0012
// 東京都港区芝大門 1-3-8
// アトラス芝大門ビル 5F
// TEL 03-5402-6930 FAX 03-3432-1310
//--------------------------------------
pgsql-jp メーリングリストの案内