big5转换:BIG5到GB的转换技术



  中文数量太多所以和英文用ASCII码个字节表示区别它使用两个字节来表示通过计算这两个字节我们可以得到其表示汉字在中文字库中位置读取该位置若干字节以获得表示这个汉字点阵信息有了这些信息就可以分别在DOS或WINDOWS中显示该汉字事实上在文本文件中保存就是每个汉字对应两个字节编码而显示问题由中文操作系统自动解决 

  汉字编码并不统我们使用是GB码而台湾地区使用是BIG5码BIG5码文件中保存是汉字相应BIG5编码GB码文件中保存是汉字相应GB编码(这也就是“乱码现象”来由)所以转换工作关键是有个记录每个BIG5编码对应GB编码码表文件 

步 制作码表文件 
  BIG5码编码规则是这样:每个汉字由两个字节构成个字节范围从0X81-0XFE共126种第 2个字节范围分别为0X40-0X7E0XA1-0XFE共157种也就是说利用这两个字节共可定义出 126 * 157=19782种汉字这些汉字部分是我们常用到、丁这些字我们称为常用字其BIG5码范围为0XA440-0XC671共5401个较不常用如滥、调我们称为次常用字范围为 0XC940-0XF9FE共7652个剩下便是些特殊 

  制作码表文件原理是这样:首先将所有BIG5编码写入个文件然后使用具有BIG5码到GB码转换功能软件Software如地球村、东方快车、 4通利方将文件转换为GB码文件即得到码表文件 

下面将所有可能BIG5编码(0XA100-0XFEFF)写入文件“Table.TXT” 

//TURBO C 3.0
# <Stdio.h>
# <stdlib.h>

void 

    FILE * codefile;
     i,j,k;
    codefile = fopen("table.txt","w+b");
    for (i=0xa1;i<=0xfe;I)
    {
        for(j=0x00;j<=0xff;j)
        {
            fwrite(& i,1,1,codefile);
            fwrite(& j,1,1,codefile);
        }
    }
    fclose(codefile);
    ;
}

运行地球村、东方快车或 4通利方将“Table.txt”从BIG5码转换为GB码
即获得码表文件 
第 2步 转换 
下面将BIG5码文件转换为GB码文件 

//TURBO C3.0
# <stdio.h>
# <stdlib.h>

void 
{
     que, wei; 
    FILE * sourcefile; 
    FILE * tabfile; 
    FILE * destfile; 
    sourcefile = fopen("big.txt'"r+b"); 

    //BIG5 码文件 
    tabfile = fopen("table.txt"'r+b"); 
    //码表文件 
    destfile = fopen("gb.txt","w+b"); 
    //转换生成GB码文件 
    while (!feof(sourcefile))
    {
        fread(& que,1,1,sourcefile);
         (feof(sourcefile))
        { 
            ;
        }
         (que> =0xa1 && que <=0xfe)
        //叛断是否汉字(BIG5编码) 
        {
            fread(& wei,1,1,sourcefile);
             (wei<0xa1) wei = wei - 0x40;
             (wei>=0xa1) wei = wei - 0xa1 + 0x7e - 0x40 + 1;
            fseek(tabfile, 2 * ((que -0xa1) * (0xfe - 0xa1 + 1 + 0x7e - 0x40 + 1 ) + wei), SEEK_SET); 
            fread(& que,1,1,tabfile); 
            fread(& wei,1,1,tabfile); 
            fwrite(& que,1,1,destfile); 
            fwrite(& wei,1,1,destfile); 
        }
        
            fwrite(& que,1,1,destfile); //处理英文 
    }

    fclose(sourcefile); 
    fclose(tabfile); 


    fclose(destfile); 
    
}
Tags:  gb2312转换成utf8 big5gb big5转换器 big5转换

延伸阅读

最新评论

发表评论