Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137241
  • 博文数量: 35
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-09 12:22
个人简介

http://www.76ku.cn

文章分类

全部博文(35)

文章存档

2011年(1)

2010年(17)

2007年(17)

我的朋友

分类: LINUX

2007-07-16 03:03:46

    1.ASCII字符--美国信息交换标准码 (0-127),每个字符用7位二进制数表示,字节首位为0.因此,小于80H(128)的均为ASCII符。英文26个字符用一个字节的7位二进制数足以表示。
    2.以gb2312为例,中文汉字共有约七千字,不能用一个字节表示全部的汉字,因此用两个字节来表示一个汉字,为避免与英文字符有重码,每个字节的最高位置1,作为标志位。
    3.ASCII分为常用字符(可供打印的字符)与非常用字符(回车、EOF等),常用字符从33(0x21H)号到126(0x7EH)号,共94个字符,汉字就在此范围内编码,因此,中国标准编码的编码范围 :0x21H~0x7EH.两个字节可表示的汉字数为:94×94=8836.

    以上所述编码即国际码

    4.由于每个字节的第一个位被置 1, 所以要在原编码(国际码)之上加 0x80H(10000000). 所以汉字的编码范围为 :0xA1H~0xFEH,在PC机中表现为机内码.
    5.区位码
    在PC机中,汉字是以机内码形式存储的,每个汉字用两个字节表示,第一个字节用于表示区码,从0xA1H开始为第一区;第二字节用于表示位码,从0xA1H开始为第一位。
    我们平时所说的汉字区位码,一般用十进制表示,共分94个区,每区94个汉字(位):

    01-09区        特殊字符区
    10-55区        一级汉字区
    56-87区        二级汉字区
   
    在汉字字库中:

    区码=机内码第一字节-0xA0H
    位码=机内码第二字节-0xA0H

    6.国际码 区位码 机内码 之间的关系:

    机内码=国际码+8080H

    区位码=机内码-0xA0H

    国际码=区位码+2020H

    如:“陈”的汉字区位码:1934(16进制为 1322H)
    在Linux下,用文本编辑器输入"陈",保存为test
    od -h test
    显示为:
    0000000 c2b3 000a
    0000003
   
    区码=b3-a0=13
    位码=c2-a0=22
(未完)

阅读(2389) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-04-14 17:28:13

为什么"陈"字在windows下用UltraEdit查看十六进制代码为B3C2呢? 在http://bm.kdd.cc/index.asp上查也这样(陈:B3C2)

chinaunix网友2010-04-02 10:44:58

用文本编辑器输入"陈",保存为test <<<<<<<<<<<<<<< 以上要在GBK字符编码下,才可以(两个字节表示一个汉字) 000a是结束符 0000003 共3个字节