Hu Zhenyu's Blog


访客计数:
net traffic statistics

about

汉字区位码计算器

我们都知道,计算机里面都是用二进制存储数据的,拉丁字母只有26个字母,要保存这几个字母只需要使用52个(包括大小写)就可以表示了。最著名的就是ASCII码(美国信息交换标准代码)。而汉字是不可能用26个字母就能表示的,所有的汉字有上万个,常用的也有三四千。曾经有人以为计算机里面无法表达如此多的汉字,中国如果继续使用汉字就无法进入计算机信息处理时代。不过,聪明的中国人还是找到了办法,为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家标准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个”区”,每一列称为一个”位”,因此,这个方阵实际上组成了一个有94个区(区号分别为0 1到94)、每个区内有94个位(位号分别为01到94)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的”区位码”。在汉字的区位码中,高两位为区号,低两位为位号。 在区位码中,01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列)。

注意:这里是中国大陆的编码标准,因为GB2312中还有一些汉字没有包含进去(例如:“熔”字),所以后来又有扩大字符集的GBK和GB18030标准。台湾地区也有自己的一套字符编码系统,常见的是BIG5。为了统一世界上各种语言文字的编码,国际上又提出了一套Unicode的编码标准。

既然我们知道计算机里面保存汉字用的是区位码,也就是说我们虽然看到的是汉字,实际保存在计算机里面的是一个个的四位的区位码。我们只要把这几个数字分离出来就可以得到区位码了。 下面是一个实例的代码,当输入的汉字是用GB2312代码时,会输出这个汉字的区位码。如果不是GB2312里面的汉字,输出的结果会是类似“72-29”这样的。

    
    program quweima;
    uses sysutils;
    var
    quwei,hanzi:ansistring;
    strln,i:integer;
    qu,wei:array [1..10] of ansistring;
    BEGIN
    readln(hanzi);   {读入汉字}
    strln:=length(Hanzi);  {测出汉字的字符长度}
    for i:= 1 to (strln div 2) do
                  begin
                    qu[i] := IntToStr(ord(Hanzi[2 * i - 1]) - $a0);   {将汉字区码取出来}
                    if length(Qu[i]) = 1 then
                        Qu[i] := '0' + Qu[i];         {如何汉字区码是一位数,在前面补零}
                    Wei[i]:= IntToStr(ord(Hanzi[2 * i]) - $a0);      {将汉字位码取出来}
                    if length(Wei[i]) = 1 then
                        Wei[i] := '0' + Wei[i];       {如何汉字位码是一位数,在前面补零}
                  end;
    for i:= 1 to (strln div 2) do
          quwei :='"' + Qu[i] + Wei[i] + '"';
    writeln('区位码是:',quwei);       {输出结果}
    END.
    

我这里还有一个图形化的版本 区位码计算器 你可以下载下来在Windows系统下运行看看

上一篇: 使用git 管理你的代码库
下一篇: 我的Linux入门指南


知识共享许可协议

本站采用 知识共享署名-非商业性使用-相同方式共享3.0 中国大陆许可协议 进行许可,转载请注明出处。

推荐使用 chrome 浏览器浏览本站。