[pgsql-jp: 29946] Re: 特定の日本語を含むとエラー

Eiji Tokuya e-tokuya @ sankyo-unyu.jp
2003年 5月 17日 (土) 14:40:39 JST


徳家です。

JDBCの設定の事が書いていないのですが・・・。
私はJDBCを使っていませんが、ひょとして、JDBCの設定がEUC-JP
などになっていたのではないでしょうか?

UNICODEのDBに対して、EUC_JPのデータは強引に入力はできますが、
文字列の長さを正しく識別できないのでトラブルの原因になります。
エンコーディングは正しく設定して利用して下さいね。


Ogino wrote:
> 荻野です。自己レスです。
> 
> 
>>以下のようなテーブルに、JDBC経由でアクセスすると
>>エラーを吐いて落ちてしまいます。
>>
>>[テーブル:キーワード]
>>create table keyword(
>>	key_id integer,
>>	keyword varchar(100),
>>	kana varchar(100)
>>);
>>
>>insert into keyword values(
>>	1,'睡眠時無呼吸症','すいみんじむこきゅうしょう');
>>
>>select * from keyword 
>>	where keyword = '睡眠時無呼吸症' ;
>>
> 
> 
> 理由は良く分かりませんが、「睡眠時無呼吸症」
> という日本語をEUCに変換したところ、
> うまくいくようになりました。
> しかし、DBはNUICODEで作ってあるので、
> なぜこれでうまくいくのかかなり疑問です。
> (PGCLIENTENCODINGもUNICODEです)
> 
> その後、新たな問題が起こりました。
> 同様に、'睡眠時無呼吸症' という単語を
> キーにして、以下のような正規表現で検索をしていた
> のですが、やはり「呼」の字があると
> 同様のエラーを吐いて落ちてしまいました。
> (PSQLからでも落ちます)
> 
> select * from hoge where name ~ '睡眠時無呼吸症'
> 
> こちらについては、LIKEにすることで
> 回避することができるのでいいのですが、
> 日本語を使った正規表現は、まだまだなのかな?
> と思いました。
> 
> 以上です。
> お騒がせしてすみませんでした。




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