国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BIG5碼到BG碼轉換技術

2019-11-17 05:45:04
字體:
來源:轉載
供稿:網友

  中文因為數量太多,所以與英文用ASCII碼一個字節表示不同,它使用兩個字節來表示。通過計算這兩個字節,我們可以得到其表示的漢字在中文字庫中的位置。讀取該位置的若干字節,以獲得表示這個漢字的點陣信息。有了這些信息,就可以分別在DOS或WINDOWS中顯示該漢字。事實上,在文本文件中保存的就是每個漢字對應的兩個字節編碼,而顯示問題由中文操作系統自動解決。

  漢字編碼并不統一,我們使用的是GB碼,而臺灣地區使用的是BIG5碼。BIG5碼文件中保存的是漢字相應的BIG5編碼,GB碼文件中保存的是漢字相應的GB編碼(這也就是“亂碼現象”的來由)。所以轉換工作的要害是有一個記錄每個BIG5編碼對應GB編碼的碼表文件。

第一步 制作碼表文件

  BIG5碼編碼規則是這樣的:每個漢字由兩個字節構成,第一個字節的范圍從0X81-0XFE,共126種。第二個字節的范圍分別為0X40-0X7E,0XA1-0XFE,共157種。也就是說,利用這兩個字節共可定義出 126 * 157=19782種漢字。這些漢字的一部分是我們常用到的,如一、丁,這些字我們稱為常用字,其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;
}

  以上程序在Win95/97,TC3.0 通過。稍加修改,也可用于CB、VC或VB程序中。用同樣的方法,我們也可以將GB碼轉換為BIG5碼。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东台市| 宜兰县| 枞阳县| 时尚| 霞浦县| 资阳市| 唐河县| 庆安县| 西乌珠穆沁旗| 济阳县| 都江堰市| 福建省| 龙海市| 屯留县| 厦门市| 高平市| 彩票| 绍兴县| 思茅市| 勐海县| 松溪县| 民县| 金坛市| 靖江市| 延川县| 陇川县| 内丘县| 临沧市| 平原县| 千阳县| 安阳县| 郸城县| 阿坝县| 时尚| 金昌市| 广平县| 公安县| 芦溪县| 富平县| 内丘县| 涟水县|