No. 211/622 Index Prev Next
Path: titcca!flab!ichikawa
From: ichikawa@flab.flab.fujitsu.JUNET (I.Ichikawa)
Newsgroups: fj.kanji
Subject: Re: hankaku-kana to zenkaku-kana convertor
Message-ID: < 2138@flab.flab.fujitsu.JUNET>
Date: 27 Nov 87 05:00:32 GMT
References: < 2102@flab.flab.fujitsu.JUNET> < 755@cskvax.csk.JUNET>
Reply-To: ichikawa@flab.flab.fujitsu.JUNET (I.Ichikawa)
Distribution: fj
Organization: Fujitsu Laboratories Ltd., Kawasaki, Japan
Lines: 71
わかりました、SI,SOはJISということにしておきます。まあ、その方が助かりま
す。あっちゃこっちゃでしていた、SI,SOのチェックをとっぱずせます。
また、半角英字と全角英字ですが、1区3区ですみそうですね。でも、ここで、
問題です:
\とか~はどうしませう?
ううむJISでいくのかなぁ?
そして、半角カナの濁点ですが、1文字先読みすれば可能です。つまり、カナを
あたかも2バイトコードとしてふるまいらせ、もし、濁点なぞでないならば、先
バイトのみ変換し、後バイトはあたかも今入力したふりをして処理をする、とい
う、goto的な処理をすれば、可能なのですが、(濁点ならば+1、半濁点ならば+2
ですむはず)、問題は、「" ら" に濁点」のようなことをされることです。
(コサキンふぁんならば、わかるはず:-)" マ" に濁点だとじゃいあんとろぼになる)
ということで、手を抜いて、濁点も一文字としてしまいましょうか。
そして、これが変換表です。(ここを調べるのがいちばんしんどかった)使っても
いいですよ。(おお、なんて太っ腹)ええい、変換ルーチンの一部まで付けちゃえ。
/* tables */
int jktb[] = {
/* C0- DF */
0x253f, 0x2541, 0x2544, 0x2546, 0x2548, 0x254a, 0x254b, 0x254c,
0x254d, 0x254e, 0x254f, 0x2552, 0x2555, 0x2558, 0x255b, 0x255e,
0x255f, 0x2560, 0x2561, 0x2562, 0x2564, 0x2566, 0x2568, 0x2569,
0x256a, 0x256b, 0x256c, 0x256d, 0x256f, 0x2573, 0x212b, 0x212c,
/* A0- BF */
0x2121, 0x2123, 0x2156, 0x2157, 0x2122, 0x2126, 0x2572, 0x2521,
0x2523, 0x2525, 0x2527, 0x2529, 0x2563, 0x2565, 0x2567, 0x2543,
0x213c, 0x2522, 0x2524, 0x2526, 0x2528, 0x252a, 0x252b, 0x252d,
0x252f, 0x2531, 0x2533, 0x2535, 0x2537, 0x2539, 0x253b, 0x253d,
0
};
int sjktb[] = {
/* C0- DF */
0x0835e, 0x08360, 0x08363, 0x08365,
0x08367, 0x08369, 0x0836a, 0x0836b,
0x0836c, 0x0836d, 0x0836e, 0x08371,
0x08374, 0x08377, 0x0837a, 0x0837d,
0x0837e, 0x08380, 0x08381, 0x08382,
0x08384, 0x08386, 0x08388, 0x08389,
0x0838a, 0x0838b, 0x0838c, 0x0838d,
0x0838f, 0x08393, 0x0814a, 0x0814b,
/* A0- BF */
0x08140, 0x08142, 0x08175, 0x08176,
0x08141, 0x08145, 0x08392, 0x08340,
0x08342, 0x08344, 0x08346, 0x08348,
0x08383, 0x08385, 0x08387, 0x08362,
0x0815b, 0x08341, 0x08343, 0x08345,
0x08347, 0x08349, 0x0834a, 0x0834c,
0x0834e, 0x08350, 0x08352, 0x08354,
0x08356, 0x08358, 0x0835a, 0x0835c,
0
};
kanji_kana (c, tbl)
int c;
int *tbl;
{
register int i;
i = tbl[0x03f & c];
putchar (0x0ff & (i >> 8));
putchar (0x0ff & i);
}
Next
Continue < 766@cskvax.csk.JUNET>
< 2168@flab.flab.fujitsu.JUNET>
< 1213@srava.sra.JUNET>
< 774@cskvax.csk.JUNET>