[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 メーリングリストの案内