No. 181/622 Index Prev Next
Path: titcca!ccut!ascgw!flab!ichikawa
From: ichikawa@flab.flab.fujitsu.JUNET (I.Ichikawa)
Newsgroups: fj.kanji
Subject: rot13/47 nkf test
Message-ID: < 1502@flab.flab.fujitsu.JUNET> 
Date: 16 Sep 87 07:02:10 GMT
Reply-To: ichikawa@flab.flab.fujitsu.JUNET (I.Ichikawa)
Distribution: fj
Organization: Fujitsu Laboratories Ltd., Kawasaki, Japan
Lines: 72
Posted: Wed Sep 16 16:02:10 1987

nkf を、ROT13/47対応にしているのですが、どうも変なのです。
EUCに向って、ROT13/47を連続して行うと、
1)一回目では、変換コードは正しいのがでる。これは、他と一致していて、
ROTなしのnkfではちゃんとEUCだと思ってれて、同一であることがわかる。

2)二回目、ROT13は常にうまくいくのだが、ROT47が元に戻らなかったり、
とんでもないコードになったり、シフトJISだとかんちがいすることがある。
ううむ、おかしい。

3)三回目。もう、わやくちゃ。

これが、シフトJISとJISをかませて、EUCを入力としないで、変換しつづけて、
いくと、rotの回数が、偶数回目ならうまくいくのです。

しかも、 ...| rot_nkf -ra | nkf -s | rot_nkf -ra |...
ならうまくいくのですが、
	 ...| rot_nkf -ra | rot_nkf -ra |...
だとうまくいかんのです。何故かなぁ?入力がROTされたEUCでないかぎりうまく
いくのだが? はてメンヨウな?

えっと、ちなみに、nkfは今のnkfで、rot_nkfがROT13/47対応のやつです。

HELP!!!理由がわからないよぉ!!!

ちなみに、

rot13 (c);
{	c & = 0x07f;
	if (c <  'A') return(c);
	else if (c < ='M') return(c+13);
	else if (c < ='Z') return(c-13);
	else if (c <  'a') return(c);
	else if (c < ='M') return(c+13);
	else if (c < ='Z') return(c-13);
	else return(c);
}
rot47 (c);
{	c & = 0x07f;
	if (c <  '!') return(c);
	else if (c < ='O') return(c+47);
	else if (c < ='~') return(c-47);
	else return(c);
}

というのを使用しています。kcのやつを参考にして、kcで使用されているものよ
り、関係演算と論理演算の数は、少々少なくなっているはずですが、どうも、EU
Cでは、こいつが悪さをしているような気がします。

本当にこれでいいのでしょうか?
---	さて、本業の仕事でもと、あっともうこんな時間かよ	市川
PS:以下は、ROT13/47対応のnkfプリαバージョンで変換したものです。
これでよいのでしょうか?
---------------------------------------cut here -----------------------
xber un EBG13/47-AXS ab grfg qrfh.

嗾嗾啀囗嗾啜唳哈咥咐圉佰劭咨劵噪喀喙囓鴟營噎噐嚀嘲囮喙嚶俟

噎噐嚀嗷囮嗤俟

卆卉匣匕匣區匆匳佩于卉卆凖佩估佩匐卞甸于亠褜竏膓勞

囓嚀嚴勞圉閼嚀嗷圄囂噫喀囗佰勞喘嚠喙囓褜囹囮囃嚼哢嗾俟俟俟
褜囂囮嗔侑

營咸咢劼囮唳咫佰劭咨劵噪喀唸嗾營噪喀哢嗷營佰嗾哢嘲劭咨劵囑嘴囎佰
蟋鷸圄壟倬奚囹囑嘴喙圄囹囮嗔侑

褜囂囮嗤侑

嚼囮唹囹佰嗾哢嘲劭咨劵褜竏囑嘴嚴唳佰噎嚀嘛囎囿侑

豫豫豫	襠齶舩	螢鐃
Next
Continue < 931@srava.sra.JUNET>
< 1803@nirvana.cs.titech.JUNET>