長田です。つづか、ないと思う(笑)。つづくなら、振ってください fj でも
どこでも。

fj.news. のどっかでも話題になってましたが、最近。

☆Subject: Re: sispri repure #9 (11/27)
In article <2c851203.0212020402.289d1eed@posting.google.com>
yutaka-o@fsinet.or.jp writes:

>> &#26085;&#25991;&#12391;&#12377;&#12290;

どうもです(笑)。

フォローしてなくてすみません。ねこまさんも。 m(..)m
#萌え付SFなのでは?とつっこみもいれたいとこ(謎)。:-p

IP 通るなら、 http://news.media.kyoto-u.ac.jp/public.html
のご利用はいかがでしょう?

どーしても読みたくてプログラム60分で作ってしまいました。

#Web の時代ですね。つくづくすごい時代だと痛感...
#いえ、jis0208.txt がなければ不可能だったということで。


適当に そのままコード化してみても、EUC でもJIS でもないので

>> ... 2377;&#12415;&#12414;&#12379;&#12435;(&#31505;)&#12290;

たぶんこれは「(笑)」だろう。もしかして UTF-8 (と fj.* でみたような)
で、Web検索してみたら、見事に一致。というわけで、急拠
conveuc関数を追加(笑)。 UTF-8 じゃなければ、20分で出来たプログラム。
せっかくだから添付しちゃいます。  今つくったから pds ですぅ。
#世の中に同じのあると思いますが...

高速化したいですが、遅くなかったのでダサダサ変換(汗)。
# sparc 100MHz でも結構速いデス!

#関係ないけど、知人の子供が学校から持ってきたちらし
#に「テニス預金デス!」とかあって受けまくってる私。

ここから〜

#include "google.h"

main()
{  int cbak;
   int  cin;

   /* 手抜きしてるので &# という通常文章は消えます */
   while(1)
   {  cin= getchar();
      if(cin<0) break;


      if('&' == cin)
      {  cbak= cin; cin = getchar();
         if('#' == cin)
         {  print2byte();
            continue;
         }
         putchar(cbak);
      }
      putchar(cin);
   }
}

print2byte()
{
   char cbuf[256];
   int cin,ip,icha;

   ip= 0;
   while(1)
   {
      cin = getchar();
      if(';'== cin) break;
      /* &#12371; */

      if((cin < '0') || cin > '9')
      {  puts("ERR"); return(1);
      }
      cbuf[ip]= cin; ip++;
   }
   cbuf[ip]= 0;
   sscanf(cbuf,"%d",&icha);

   icha= conveuc(icha);
   icha+= 0x8080; /* to euc */
   putchar(icha>>8);
   putchar(icha&0xff);

}

conveuc(icha)
int icha;

{  int ii;

   for(ii= 0; ii<7000 ;ii++)
   {   if(!iconv[ii][1]) break;
       if(icha== iconv[ii][1]) return(iconv[ii][0]);
   }
   return('E'<<8 | 'R');
}


ここから google.h の先頭、最後です


/* 次の Unicode テーブルを Web で拾って加工しました */
/* jis0208.txt */

/* #    Name:             JIS X 0208 (1990) to Unicode */
/* #    Unicode version:  1.1 */
/* #    Authors:          Glenn Adams */

  int iconv[7000][2]=
{
   { 0x2121,0x3000      } ,
   { 0x2122,0x3001      } ,
   { 0x2123,0x3002      } ,
   { 0x2124,0xFF0C      } ,
   { 0x2125,0xFF0E      } ,

略

   { 0x7423,0x9059      } ,
   { 0x7424,0x7464      } ,
   { 0x7425,0x51DC      } ,
   { 0x7426,0x7199      } ,
   { 0, 0 }
};