[pgsql-jp: 26472] Re: Invalid EUC_JP character エラー対策

Kazumasa Gotoh kgotoh @ cic-kk.co.jp
2002年 6月 22日 (土) 09:08:03 JST


From: Hajime Lucky Okada <paraiso @ luckyo.8m.com>
Date: Fri, 21 Jun 2002 18:23:22 +0900

> > ようは、日本語EUC として不正な文字をはじいてゆくのですから、一文字づつ…
> > というより実際には 1byte づつか… チェックしていけばよいでしょう。
> 
> この 1byte というのが曲者で、漢字の半バイトのコードで 確かに漢字コードの
> 一部として正しいものなのか 或いは化けものかの正確な区別に困っています。

日本語EUC のコード体系の資料は相変わらず手元にありませんが(以前は
持ってたんだけど、どこにやってしまったやら…)、桜井さんが示して
くださった URL もありますし、他にも一次情報に近い情報も探せば
でてくるでしょう。

コード体系の資料があれば、文字集合として正しいものなのかそうで
ないのかはプログラムで判定することができます。そうですよね?

> 文字列に通常の半角英数まで混じってくると・・更に複雑になって(?)
> どうなんでしょう?

日本語EUC の場合、2バイトコードだけでなく 3バイドコードなども
文字集合に含まれますが、特に複雑というほどの事はないです。
EUC はもともと「プログラムでの処理が複雑にならないように」という
配慮もいれて定められていたはずですから。

いわゆる半角英数と半角カタカナが混在した文字列の中で漢字であるか
どうかを判定するのは SJIS の方がはるかに「複雑」です。

文字列の中で SJIS 漢字であるかどうかを判定するプログラムは
書いた事があるけど、日本語 EUC の判定よりも面倒だった。

ひょっとして、日本語EUC がのようなコード体系なのか、基本的なところを
ご存じないのかな?

> > ちょっと手元に資料がないので具体的なコード体系は示せませんけれども、
> > なんとなれば PostgreSQL ではチェックを行っているのですから、
> > PostgreSQL の当該処理部のソースを見るという方法もあるでしょう。
> 
> 私も少しソースの中に潜ってみたのですが まだ見つかってません (^^;;

この手の用途で参考にするのでしたら、nkf のソースの方が簡単
かも知れません。ソースも短いし。

nkf 以外にも漢字コード変換ユティリティはいくつかありますが、
それらのプログラムでどのように漢字コード自動判定を行っているかを
調べてみてもよいでしょう。

基本的には、それほど頭を悩ますほどの事ではないはずですよ。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh @ cic-kk.co.jp



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