2024年4月14日发(作者:)
汉字编码及区位码查询算法
为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国
家标准:GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息
处理技术的发展基础,也是目前国内所有汉字系统的统一标准。到了后来又公布了国家标
准GB18030-2000《信息交换用汉字编码字符集基本集的扩充》,简称GB18030。由于国
标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉
字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"区",每一列称为一个"位",
因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位
号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了
该汉字的"区位码"。在汉字的区位码中,高两位为区号,低两位为位号。在区位码中,01-09
区为682个特殊字符,16-87区为汉字区,包含6763个汉字 。其中16-55区为一级汉
字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,
按部首次序排列)。
从汉字到区位码的转换。区位码是与汉字一一对应的编码,用四位数字表示, 前两位
从01 到94称区码,后两位从01到94称位码。 一个汉字的前一半为“160+区码”的
字符,后一半为“160+ 位码”的字符。例如:“刘”的区位码是 3385,其意为区码33
位码85,它是由160+33=193和160+85=245的两个字节组成。即 C1F5,它就是汉
字的 gb2312 编码。
下面程序将汉字 gb2312 转为相应的区位码:
#include
汉字编码及区位码查询算法
1
#include
{
// temp[0] 为高字节,temp[1] 为低字节
// 当输入单个 ascii 字符时,只存进 temp[0]
// 当输入的不是中文或单个 ascii 字符时,程序退出
unsigned char temp[2];
cin >> temp;
while(temp[1])
{
cout << setw(2) << setfill('0') << temp[0] - 160; // 高 2 位
cout << setw(2) << setfill('0') << temp[1] - 160 << endl; // 低 2 位
入下一个字符前,先将 temp[1] 清零
temp[1] = 0;
cin >> temp;
汉字编码及区位码查询算法
2
// 输
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713085403a2180012.html
评论列表(0条)