文章·资料 电脑软件 手机应用 网站源码




    本 站 搜 索
   推 荐 文 章        More...
华硕易电脑(ASUS Eee PC 1025C..
先来段开场白:为了外出携带方便,到淘..
Acronis True Image 使用说明
  一款可以在Windows下使用全部功..
Norton Ghost 使用详解
一、分区备份   使用Ghost进行系..
    文 章 阅 读 排 行
手机视频监控 APP 关闭广告:萤..
一、萤石云视频:我的,设置,隐私设置,..
常见数据库介绍与对比(SQL Serv..
常见数据库的对比分析,涵盖你提到的 A..
Windows 系统修改默认文件类型..
Windows 系统文件类型图标,通常由默..
Windows 系统安装或备份时 ISO,..
【ISO 文件】 ISO 文件其实就是光..
Microsoft SQL Server 2000 Per..
  对于第一次安装 Microsoft SQL Se..
颜色与英文单词对照
颜色与英文单词对照 red green bl..
PakePlus 构建 APP 需要 Github..
PakePlus 是一个基于 Rust Tauri 的..
主页真的越Google、越简洁越好吗
  如果你在11月10日早上打开雅虎中..
网络工程师必懂的专业术语
路由器问题:1、什么时候使用多路由协..
为啥现在的电脑都不能安装 Wind..
说实话,这几年如果你尝试在新电脑..
 文 章 信 息
BIG5到GB的转换技术
评论()〗〖留言〗〖收藏
〖文章分类:电脑·手机·网络 / 电脑软件安装·卸载·设置〗〖阅读选项
中文因为数量太多,所以与英文用ASCII码一个字节表示不同,它使用两个字节来
 
表示。通过计算这两个字节,我们可以得到其表示的汉字在中 
 文字库中的位置。读取该位置的若干字节,以获得表示这个汉字的点阵信息。有
 
了这些信息,就可以分别在DOS或WINDOWS中显示该汉字。事实上, 
 在文本文件中保存的就是每个汉字对应的两个字节编码,而显示问题由中文操作
 
系统自动解决。 
    汉字编码并不统一,我们使用的是GB码,而台湾地区使用的是BIG5码。BIG5
 
码文件中保存的是汉字相应的BIG5编码,GB码文件中保存的是汉字 
 相应的GB编码(这也就是“乱码现象”的来由)。所以转换工作的关键是有一个
 
记录每个BIG5编码对应GB编码的码表文件。 
 第一步 制作码表文件 
    BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从
 
0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E, 
 0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出 126 * 157=19
 
782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字 
 我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字
 
,如滥、调,我们称为次常用字,范围为 0XC940-0XF9FE,共 
 7652个,剩下的便是一些特殊字符。 
    制作码表文件的原理是这样的:首先将所有的BIG5编码写入一个文件,然后
 
,使用具有BIG5码到GB码转换功能的软件,如地球村、东方快车、 
 四通利方,将文件转换为GB码文件,即得到码表文件。 
    下面的源程序将所有可能的BIG5编码(0XA100-0XFEFF)写入文件“Table.
 
TXT”。 
 //TURBO C++ 3.0 
 #include <Stdio.h> 
 #include <stdlib.h> 
 void main(){ 
 FILE * codefile; 
 int 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);
return;
}
运行地球村、东方快车或四通利方,将“Table.txt”从BIG5码转换为GB码,

即获得码表文件。
第二步 转换
下面的源程序,将BIG5码文件转换为GB码文件。
//TURBO C++3.0
#include <stdio.h> 
 #include <stdlib.h> 
 void main(){ 
 int 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); 
 if (feof(sourcefile)){ 
 break; } 
 if (que> =0xa1 && que <=0xfe)
//叛断是否汉字(BIG5编码)
{fread(& wei,1,1,sourcefile);
if (wei<0xa1) wei = wei - 0x40;
if (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); 
 } 
 else 
 fwrite(& que,1,1,destfile); //处理英文 
 } 
 fclose(sourcefile); 
 fclose(tabfile); 
 fclose(destfile); 
 return; 
 } 

文章作者:未知  更新日期:2005-10-30
〖文章浏览:〗〖发送文章〗〖打印文章
相关软件 ·Visual Basic:GB码与BIG5码的相互转换 2005-07-07
·阿勇 GB/BIG5/UTF-8 文件编码转换 V1.32019-08-27