[pgsql-jp: 39295] Re: 'encoding "EUC_JP" has no equivalent in "UTF8"' の理由

ITAGAKI Takahiro itagaki.takahiro @ oss.ntt.co.jp
2008年 3月 25日 (火) 12:43:28 JST


板垣です。

H.Harada <umi.tanuki @ gmail.com> wrote:

> データベースをEUC_JPで構築し、PgAdminでアクセスした際に、
> encoding "EUC_JP" has no equivalent in "UTF8"
> というエラーが発生することが時々見受けられます。
> もちろんこの原因はメッセージの通りだと理解できるのですが、
> これを「エラー」として扱う必要ってあるのでしょうか??

あります。
取得する際に ? に変換されてしまい、その結果を演算(例えば文字連結)した
結果を、もう一度 INSERT なり UPDATE なりすると、情報が消失してしまいます。
「データベース製品」である以上、情報消失の可能性を減らす仕様に
なっているのは、妥当な選択に感じます。
(オプションとしてならば、? で取得するモードがあっても良いとは思いますが)


この問題は、むしろ EUC_JP → UTF8 のマッピングが弱いことが原因かもしれません。
例えば、以前この ML にも流れた「はしごたか」などですね。

基本的には UTF8 は EUC_JP や SJIS を含む文字セット(スーパーセット)
だと思っていますが、この認識であっているでしょうか?
もしそうなら、単に変換マッピングを追加していけば、
少なくとも EUC_JP → UTF8 での変換エラーは無くなるはずです。
各種ベンダ依存のマッピングを追加する話なのかもしれませんが、
そこは「強いものに巻かれて」も、まぁ大きな問題はないのかなとは思います。




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