[pgsql-jp: 39277] Re: 機種依存文字によるPgAdminのエラー

ISHIDA Akio iakio @ mono-space.net
2008年 3月 4日 (火) 20:33:06 JST


こんにちは。石田@苫小牧市です。

08/03/04 に ITAGAKI Takahiro<itagaki.takahiro @ oss.ntt.co.jp> さんは書きました:
> 板垣です。
>
>
>  utsumi <takashi @ pat.hi-ho.ne.jp> wrote:
>
>  > ブラウザ(WindowsXPのIE7)から機種依存文字の「はしごたか」を入力して、DB
>  > に保存、そのデータをブラウザで表示しても「はしごたか」が表示されます。
>  >
>
> > エラーメッセージは
>  > ERROR:  character 0xfce2 of encoding "EUC_JP" has no equivalent in "UTF8"
>  > です。
>
>
> 「はしごたか」は、sjis や eucjp では 2通りのコードが割り当てられているようです。
>  PostgreSQL は、このうち、eucjp fce2 の変換マッピングを持っていません。
>
>   sjis | eucjp  | utf8
>  ------+--------+--------
>   eee0 | fce2   | e9ab99
>   fbfc | 8ff4fb | e9ab99
>
>  ◎ SELECT encode(convert(decode('eee0', 'hex'), 'sjis', 'utf8'), 'hex');
>  ◎ SELECT encode(convert(decode('fbfc', 'hex'), 'sjis', 'utf8'), 'hex');
>  × SELECT encode(convert(decode('fce2', 'hex'), 'eucjp', 'utf8'), 'hex');
>  ◎ SELECT encode(convert(decode('8ff4fb', 'hex'), 'eucjp', 'utf8'), 'hex');
>
>
>  eucjp を使うのならば、8ff4fb に変換して格納するのはいかがでしょう?
>  fce2 と 8ff4fb が混在し、期待通りの検索ができなくなることも避けられます。
>  ただ、全ての文字コードを UTF8 に統一するのが一番問題が少なそうではありますが。
>
>  また、CREATE CONVERTION を絡めれば、変換を自作して追加できるかと思います。
>  とはいえ、なぜデフォルトで fce2 を絡めた変換はサポートされていないのか
>  不思議です。追加すべきでない理由があるんでしょうか?
>

私の認識では、sjis->euc-jpの変換で
  eee0 -> fce2
  fbfc -> ×
となっているのがcp51932で
  eee0 -> 8ff4fb
  fbfc -> 8ff4fb
となっているのがeucjp-openだと思います。
fce2と8ff4fbの両方が存在するeuc-jpの仲間?は無いと思います。

現在のPostgreSQLのeuc-jpはeucjp-openなわけですが、
何故といわれれば、以前はIBM拡張もNEC選定IBM拡張もサポート
しない時代があって、その後eucjp-openが追加された、という
だけの話だと思います。

euc-jp->utf-8の変換で
fce2 -> e9ab99
8ff4fb -> e9ab99
となるようなCONVERTIONがあってもいいなと思いますが、
それが標準のCONVERTIONとするのはどうなんでしょうか。
こういうマッピングは一般的なんでしょうか。

-- 
ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>



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