[pgsql-jp: 35233] Re: IBM拡張文字の扱いについて

MORIYAMA Masayuki msyk @ mtg.biglobe.ne.jp
2005年 4月 12日 (火) 12:49:11 JST


森山です。

On Mon, 11 Apr 2005 15:43:55 +0900
"kk" <noritamag @ hotmail.com> wrote:

> eucJP-open が何のためにあるのか、いまいち
> よく分からず、いろいろと調べているところでした。

eucJP-open については次をご覧ください。
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html

> ODBCドライバの中身を修正して、
> SJISの文字コード "FB40" を
> 初めから、CP51932 の "FAE3" 
> に変換するようにしてしまえば、
> 
> 「さんずいに位という字」
> (SJISの文字コード "FB40")は、
> 
>  ・PHPでDBに格納 
>     → Accessリンクテーブル経由で表示
>  ・Accessリンクテーブル経由でDBに格納 
>     → PHPでブラウザ表示
> 
> の両方ともできて、嬉しいと思うのですが…。

開発するソフトウェアのメンテナンスの事までも考えて、本当にそれで嬉しい
でしょうか? (ODBC ではなく、PostgeSQL の文字コード変換に CP51932 を追
加するという事になるでしょうが)

PostgreSQL、PHP の両方とも、SJIS-open、eucJP-open に対応しているのです
から、その機能をうまく使って対応した方が、余計なコードを書かずに済みま
すので、今後のメンテナンスの事を考えると良いのではなかという気がします
けれども。

それぞれの対応関係は次の通りです。

  TOG/JVC     PostgreSQL  PHP                    Windows
  ----------------------------------             --------
  SJIS-open   SJIS        SJIS-win   ← 互換 →  CP932
  eucJP-open  EUC_JP      eucJP-win  ←非互換→  CP51932


○Windows 機種依存文字が文字化けしない文字コードの組み合わせ

  PostgreSQL DB ⇔ PHP-internal ⇔ PHP-in/out ⇔ Windows IE
  EUC_JP           eucJP-win       SJIS-win      CP932
  EUC_JP           eucJP-win       UTF-8         UTF-8('〜'問題に注意)
  UNICODE(UTF-8)   UTF-8           SJIS-win      CP932
  UNICODE(UTF-8)   UTF-8           UTF-8         UTF-8('〜'問題に注意)

    PHP-internl = mbstring.internal_encoding
    PHP-in/out  = mbstring.http_input / mbstring.http_output

  ※すべての組み合わせで、すべての文字について確認したわけではありませ
    んので、実際に使う場合は、事前に検証を行って問題のない事を確認して
    使用するようにしてください。

○'〜'問題
  一部の文字について Unicode(UCS) でのコード値が JIS 規格と MS とで異
  なる問題。

  IE など Windows のブラウザは、下の表の MS-Unicode を使用している。

    文字 EUC-JP SJIS   JIS-Unicode MS-Unicode
    ―   0xA1BD 0x815C U+2014      U+2015
    〜   0xA1C1 0x8160 U+301C      U+FF5E
    ‖   0xA1C2 0x8161 U+2016      U+2225
    −   0xA1DD 0x817C U+2212      U+FF0D
    ¢   0xA1F1 0x8191 U+00A2      U+FFE0
    £   0xA1F2 0x8192 U+00A3      U+FFE1
    ¬   0xA2CC 0x81CA U+00AC      U+FFE2

どのような対応を行う場合でも、正確に現状を把握しておいて、どのような対
応が好ましいのか決める必要があると思います。

○その他の問題

Windows の機種依存文字を扱う場合、上記のような問題以外にも、下のような
問題もあるという事を認識して開発を行わないと、運用してから問題にぶち当
たり問題の原因究明に時間を取られてしまうという事になるかもしれません。
標準化されていないものを扱うという事は、それだけリスクを伴います。

  マイクロソフト サポート技術情報 - JP170559
  [PRB] SHIFT - JIS と Unicode 間の変換問題
  http://support.microsoft.com/default.aspx?scid=kb;ja;JP170559

  Java の MS932, Cp943C, SJIS の違い
  http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?past=1&c=gr&n=93
  ※Java の問題というよりも、IBM製ソフトとMS製ソフトでの SJIS⇔Unicode 
    変換の違いが問題になってくる場合があります。

‖森山 将之 (MORIYAMA Masayuki)
‖e-mail: msyk @ mtg.biglobe.ne.jp




pgsql-jp メーリングリストの案内