No. 91/622 Index Prev Next
Path: titcca!ascgw!flab!ichikawa
From: ichikawa@flab.flab.fujitsu.JUNET (Dr.I.Ichikawa)
Newsgroups: fj.kanji
Subject: Re: is-shift-JIS or is-EUC ? (in Kanji)
Message-ID: < 958@flab.flab.fujitsu.JUNET> 
Date: 14 May 87 16:53:56 GMT
References: < 602@shpnar.sharp.JUNET> 
Reply-To: ichikawa@flab.fujitsu.junet (Dr.I.Ichikawa)
Distribution: fj
Organization: Fujitsu Laboratories Ltd., Kawasaki, Japan
Lines: 48
Posted: Fri May 15 01:53:56 1987

In article < 602@shpnar.sharp.JUNET>  ikoma@shpnar.sharp.JUNET (Takao Ikoma) writes:
> そこまでやらなくても、C1領域(0x8*、0x9*)のコー
> ドがくればShiftJISと判定してたいていの場合大丈夫でしょう
> 
> ただし、このような判定方法は完全なものではなく、入力データがある
> 程度の量ないと、セマンティクス抜きでは判定できません。たった2バ
> イトのデータがどちらのコードなのかは、書いた本人に聞いてみないと
> 分かりません。

実は今、7bitJIS, EUC, Shift-JISから、任意の指定したコードへのフィルタを
作っています。社内用に作ってますので、fj.sourcesに投稿できるかどうかは、
むずかしいですが、どうやっているかを説明しましょう。

EUCとShift-JISが、JUNETのメッセージの規約(bitの加藤氏の記事あたり
を参照してください)している場合、この2つがぶつかるのは、どちらも第二水準
のはずだったような気がします。ですから、はじめから見ていって、どちらか判定
がつかないのが、どのくらいあるかはわかりませんが、そのあいだはがまんしても
らうとして、とにかく、いつかは解決されています(少くともニュースの記事を調
べた結果では)。そうなのです、判定不能な文字の部分はあまり使用頻度がどちら
のコード系においても少いのです。ですから、よほどヘソ曲りでないかぎり、ある
いは、特殊な場合をのぞいて、メッセージとしてみると、必ずいつかは判定できま
す。
ただいやらしいのは、判定保留している文字の数です。特に、0x20-0x7eは、変換
しなくもいいのですが、保留の間はこれらもそして制御文字も保留しなければなり
ません。ここがめんどうなところです。

そこで、内部的にはEUCにしてしまいます。保留部分も2バイトで貯蔵しておきます。
こうしておいて判定がついたらば、まとめて変換するようにします。

ただし、バッファリングなしで行いたい場合には、問題があります。

あと問題なのは、ひとつのメッセージに混在している場合です。これは禁止しない
とまずむりです。はじめ、行単位で判定しようとしましたが、困難だと思います。
引用の場合を考えてのことでしたが、引用の時、運がわるいと、ぶつかっているよ
うな所の一文字で行を構成する場合がありました。

詳細はまだ完成していませんが、そのコード系でも問題となるコードでないかぎり
は、まず、変換できます。ただし、文字セットについては、同じだという仮定をし
ます。外字や、いわゆる半角カナや、文字セットの切りかえや対応がちがうコード
については、対処できません。

まあ、100%ではありませんが、通常のネットワークのメッセージへの使用には、こ
うした統計的な手法で十分だと思います。

完成したら、また報告します。
−−− そのために、Cのプログラムを書いている イチカワ でした。
PS:ちなみにnkf2hj(Network Kanji Filter, Rel.2, Ver.H, Rev.J)と命名して
います(DE JH2FKN/1 :-)
Next
Continue < 659@rshvax.ascii.junet>