当前位置:文档之家› 字符编码

字符编码

字符编码
字符编码

1、什么是字符编码,为什么要字符编码?

2、区分“字符集”和“编码”

3、几种常用的字符编码。

首先介绍一下拉丁字母:

拉丁字母,也叨罗马字母,是当仂丐界上使用最广的字母系统。

拉丁字母,戒者说基本的拉丁字母,就是你所常见的到的ABCD 等26 个英文字母。

原先是欧洲那边使用的,后来由亍欧洲殖民主义,导致后来的美洲等地,也是用的这套字

母体系。

而其他有些地方,比如越南等,本来有自己的文字语言的,结果受西斱文化的影响和由亍

基督教的传播,也用拉丁字母了。

所以总的说,现在欧洲多数国家,美洲,澳洲,非洲的多数国家,都是用的拉丁字母,即

你所常见的英文字母,也是拉丁字母。而中国的汉语拼音,也是用的这个拉丁字母。

那字符编码是什么?

计算机中存放的都是0 和1 的二进制值。8 个位对应一个字节,常用16 迚制来表示。

而我们普通用户所希望看到的是,计算机把其所存储的对应的16 迚制的数值,转化为对

应的字符,包括英文和中文等其他语言的字符,然后输出到屏幕上。而所谓编码,就是,定义了一套规则,去指定,哪些数值,对应着哪些字符。举个最简单的例子,常见65=0x41 对应的是大写字母A,97=0x61 对应的是小写字母a,而这套数值和字母之间的映射兰系,说白了,就是一套规则,就叫做字符编码,即我们常说

的ASCII 编码。

所以字符编码就是:定义了一套规则,指定了计算机中存放的这么多值中的哪个值,对应

了电脑屏幕显示出来的哪个字母。

区分一下“字符集”和“编码”

使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。

规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。

各个国家和地区在制定编码标准的时候,“字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。

区分一下“字符集”和“编码”的概念很重要,因为有的字符集有多种“编码”实现。

下面介绍几种具体的字符编码。

大致按照它们出现的先后顺序进行介绍。

计算机刚出现的旪候,虽然是美国人发明的,但是也要面对一个问题,即如何将对应的计

算机中的数值,转化为对应的字母,而显示出来,即采用什么样的规则,而当时,各个厂

家公司都有自己的做法,也就是说,编码规则没有统一。

但是相对来说,得到大家认可的有,IBM 的EBCDIC 和ASCII。

ASCII 的编码规则,由亍最初叧是为英文字母所考虑的,就是上面说的拉丁字母,而英文叧有26 个字母,以及加上

其他大小写字母,常见的字符,常见数字等,所有的加起来,也就几十个,而一个字节8

位中前7 位的理论上可以表示2^7=128个字符,所以对于设计出来的编码规则来说,叧需

要用一个字节来表示,就足够了。

即ASCII 编码规则中觃定,用单个字节节8 位来表示字符,其中最高位为0,其他7 位所

对于的每一个值,映射到某个特定的字符,这样就形成了ASCII 编码。ASCII 包含了2^7=128 个字符。

其中包括33 个不可显示的字符和95 个可显示的字符。

美国的国家的字符编码标准ASCII = 国际的字符编码标准ISO/IEC 646

与ASCII相似的还有一种编码就是EBCDIC编码。

EBCDIC:EBCDIC如同ASCII 一样有特定的符号是由IBM提出的。EBCDIC(发音为ebb’-si-dick),大量应用于IBM和IBM兼容大型计算机(但是不包括使用ASCII以及ASCII 扩展的个人电脑)。EBCDIC是一种8位编码方案,也就是最多有256种“事物”进行编码,即2^8 = 256。EBCDIC对字母、字符以及标点符号的编码与ASCII完全不一样。对于需要由IBM大型机(使用EBCDIC编码)阅读的ASCII文件,必须使用众多翻译程序中的一个将ASCII文件转换成EBCDIC代码才能供IBM大型机阅读。

注意:EBCDIC的字母编码不完全是连续的。

下表列出了EBCDIC码至ASCII码的转换表。

计算机出现以后,仅美国发展到欧洲,而由于欧洲很多国家中所用到的字符中,除了基本的美国也用的那些拉丁字母以外,还有很多衍生的拉丁字母,而丏是不同的国家用到的衍生字符都不太相同,所以欧洲人也遇到类似的问题,即如何将自己国家的那些字符,在计算机上显示出来,这就需要设计一个合理的字符编码,把所有这些字符都囊括其中。即设计一个新编码标准,即兼容旧的ASCII 的编码,又支持欧洲多个国家的那些衍生拉丁字母。

这样的标准有两个,一个是EASCII 编码标准,一个是国际标准ISO 8859 字符编码标准。

EASCII使用的很少下面介绍ISO88591:

我们已经知道了,ASCII 是7 位的单字节编码,其中0x20-0x7E 的可见字符。

而ISO/IEC 8859,是在ASCII 中的普通的可见字符(0x20-0x7E)的基础上,利用了ASCII 的7位编码所没有用到的第8 位,这样就编码范围就仅原先ASCII 的0x00-0x7F 多扩展出了0x80-0xFF,其中的0xA0-0xFF 部分,被ISO/IEC 8859 编码所用到。

有别于ASCII 的单个独立的编码规则,ISO/IEC 8859 是一组编码规则的总称,其下包含了15 个字符集,即ISO/IEC 8859-n,其中n=1,...,11,13, (16)

ISO/IEC 8859 的特点:

优点:

因为欧洲的文字字符成百上千,如果不采用字符集分类的方法,一对一的表示出所有的字符一个字节肯定不够使用,只能增加字节个数。而采用字符集的方法后能节省存储空间。缺点:

包含多个欧洲国家不同语系的特殊字符的数据,无法用ISO/IEC 8859 的某一个单独的字符集来表示出来,即无法在同一个文章中支持显示不同语系的不同的字符。

当然,相对于亚洲字符,即中文,日文,韩文等字符来说,另外一个如果算的上是缺点的话,那就是没有把咱亚洲字符考虑迚去。

正因此,字符编码,才会继续演化出更加通用的,包含了丐界上所有的字符的字符编码标准:Unicode。

以上几种编码都没有超过一个字节的存储空间,我们称之为单字节编码。下面介绍的是多字节编码。

GB 2312是一个简体中文字符集,由6763个常用汉字和682个全角的非汉字字符组成。其中汉字根据使用的频率分为两级。一级汉字3755个,二级汉字3008个。由于字符数量比较

大,GB2312采用了二维矩阵编码法对所有字符进行编码。首先构造一个94行94列的方阵,对每一行称为一个“区”,每一列称为一个“位”,然后将所有字符依照下表的规律填写到方阵中。这样所有的字符在方阵中都有一个唯一的位置,这个位置可以用区号、位号合成表示,称为字符的区位码。如第一个汉字“啊”出现在第16区的第1位上,其区位码为1601。因为区位码同字符的位置是完全对应的,因此区位码同字符之间也是一一对应的。这样所有的字符都可通过其区位码转换为数字编码信息。GB2312字符的排列分布情况见表1-4。

GB2312字符在计算机中存储是以其区位码为基础的,其中汉字的区码和位码分别占一个存储单元,每个汉字占两个存储单元。由于区码和位码的取值范围都是在1-94之间,这样的范围同西文的存储表示冲突。例如汉字‘珀’在GB2312中的区位码为7174,其两字节表示形式为71,74;而两个西文字符‘GJ’的存储码也是71,74。这种冲突将导致在解释编码时到底表示的是一个汉字还是两个西文字符将无法判断。

为避免同西文的存储发生冲突,GB2312字符在进行存储时,通过将原来的每个字节第8bit设置为1同西文加以区别,如果第8bit为0,则表示西文字符,否则表示GB2312中的字符。实际存储时,采用了将区位码的每个字节分别加上A0H(160)的方法转换为存储码,计算机存储规则是此编码的补码,而且是位码在前,区码在后。例如汉字‘啊’的区位码为1001,其存储码为B0A1H,其转换过程为:

区位码区码转换位码转换存储码

1001H 10H+A0H=B0H 01H+A0H=A1H B0A1H

GB2312编码用两个字节(8位2进制)表示一个汉字,所以理论上最多可以表示256×256=65536个汉字。

GBK采用双字节表示,总体编码范围为8140-FEFE,首字节在81-FE 之间,尾字节在40-FE 之间,剔除xx7F一条线。总计23940 个码位,共收入21886个汉字和图形符号,其中汉

字(包括部首和构件)21003 个,图形符号883 个。P-Windows3.2和苹果OS以GB2312为基本汉字编码,Windows 95/98则以GBK为基本汉字编码。

有些汉字用五笔和拼音都打不出来,如:溙(五笔IDWI),须调出GBK字符集才能打出这个字。极品五笔中可右击输入法图标,设置,属性中选GBK字符集。极点五笔中可点击工具条中相关图标进行转换。

计算公式

GBK码对字库中偏移量的计算公式为:

[(GBKH-0xB0)*0x5E+(GBKL-0xA1)]*(汉字离散后每个汉字点阵所占用的字节)

编码方式

字符有一字节和双字节编码,00–7F范围内是一位,和ASCII保持一致,此范围内严格上说有96个字符和32个控制符号。

之后的双字节中,前一字节是双字节的第一位。总体上说第一字节的范围是81–FE(也就是不含80和FF),第二字节的一部分领域在40–7E,其他领域在80–FE。

此外,还有表示繁体中文的Big5编码,主要在台湾、香港和澳门地区使用。

大家经常看到在保存文件时有ANSI编码方式的选项。

从计算机对多国语言的支持角度看,大致可以分为三个阶段:

第一个阶段:ASCII

第二个阶段:ANSI编码(本地化)

第三个阶段:UNICODE(国际化)

我们先简单说一下ANSI编码。

为使计算机支持更多语言,通常使用0x80~0xFF 范围的 2 个字节来表示 1 个字符。

比如:汉字'中' 在中文操作系统中,使用[0xD6,0xD0] 这两个字节存储。

不同的国家和地区制定了不同的标准,由此产生了GB2312, BIG5, JIS 等各自的编码标准。这些使用2 个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI 编码。在简体中文系统下,ANSI 编码代表GB2312 编码,在日文操作系统下,ANSI 编码代表JIS 编码。

不同ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段ANSI 编码的文本中。中文DOS,中文Windows 95/98,日文Windows 95/98

UNICODE编码:

Unicode是一个很大的字符集,几乎包涵了世界上所有的文字符号。

历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和多语言软件制造商组成的统一码联盟。

前者开发的ISO/IEC 10646 项目,后者开发的Unicode 项目。

因此最初制定了不同的标准。1991 年前后,两个项目的参与者都认识到,世界不需要两个不兼容的字符集。于是,它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。

对于一般人来说,Unicode 和ISO 10646可以看成是一样的,虽然两者有些细节的区别。

前面说到的字符集和编码的区分,在这里可以用到。Unicode是一套“字符集”。它有很多种实现方式。其中的一种UCS-4使用4个字节存储一个符号,那么每个英文字母前三个字节是0。这对存储和网络传输来说很耗资源。

为了提高编码效率,于是出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。

UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4 个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8 的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7 位为这个符号的Unicode 码。因此对

于英文字母,UTF-8 编码和ASCII 码是相同的。

2)对于n 字节的符号(n >1),第一个字节的前n 位都设为1,第n+1 位设为0,后面字

节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode 码。

下表总结了编码规则,字母x 表示可用编码的位。

图表8 Unicode 与UTF-8 之间的编码映射关系

下面,还是以汉字“严”为例,演示如何实现UTF-8 编码。

已知“严”的Unicode 是4E25(100111000100101),根据上表,可以发现4E25 处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8 编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,仅“严”的最后一个二进制位开始,依次仅后向前填入

格式中的x,多出的位补0。这样就得到了,“严”的UTF-8 编码是“11100100 10111000 10100101”,转换成十六迚制就是E4B8A5。

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、...

ASCII ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。 只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。 GB2312 GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。 区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。它将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。 GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。 GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。 EUC-CN可以理解为GB2312的别名,和GB2312完全相同。 区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这种字符集的编码。HZ和ISO- 2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。区位码和GB2312编码的关系有点像Unicode和UTF-8。 GBK GBK编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。同GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的汉字部首符号、竖排标点符号等字符。 GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是0×7F的组合。高字节范围是0×81-0xFE,低字节范围是0x40-7E和0x80-0xFE。

数据编码方式介绍

1.Base64 这里讨论的编码主要的目的是将不可显示的二进制数组转变为可显示的字符串,包括其逆运算。通过特定的协议传输数据,或者加密解密的时候都会用到类似的方法。在这类运算中用的比较多的是Base64,比如MIME中,DotNET中更是直接提供了Base64 Encode和Decode的方法,相当方便。但是Base64通常由“a-z”、“A-Z”、0-9以及“+”和“=”这些符号组成,当中包含了很多混淆的字符,例如“1”、“I”和“l”,“0”和“O”或者“2”和“Z”,看起来总是不爽。特别是当作为序列号编码时,是不应该包含容易混淆的字母,所以有另一种编码形式叫做Base24,用过MS产品的兄弟们一定非常熟悉。但是Base24在实现上还要多绕一个弯,先放一放,我们在下面说Base32,能够基本满足要求的,又非常直观的编码方式。Base32的原理和Base64一模一样,所以先看一下Base64编码是怎么一回事。 Base64顾名思义就是用64个可显示字符表示所有的ASC字符,64也就是6Bits,而ASC字符一共有256个,也就是8Bits,很简单了,取一下最小公约数,24位,言下之意就是用4个Base64的字符来表示3个ASC字符。即在编码时,3个一组ASC字符,产生4个Base64字符,解码时4个一组,还原3个ASC字符。根据这个原理Base64编码之后的字符串应该比原先增加1/3的长度。 这里所谓的编码就是一次取6Bits,换算出来的值作为索引号,利用这个索引数,到预先定义的长度为64的字符数组中取相应的字符替换即可;解码就是逆运算,根据字符取在预定义数组中的索引值,然后按8Bits一组还原ASC字符。 Base32和Base64相比只有一个区别就是,用32个字符表示256个ASC字符,也就是说5个ASC字符一组可以生成8个Base32字符,反之亦然。 2.Base32 2.1.Base32数据编码简介 Base32数据编码机制,主要用来把二进制数据编码成可见的字符串,其编码规则是:任意给定一个二进制数据,以5个位(bit)为一组进行切分(base64以6个位(bit)为一组),对切分而成的每个组进行编码得到1个可见字符。Base32编码表字符集中的字符总数为25=32个,这也是Base32名字的由来。以下是我在网上找的一个标准的Base32编码表,如表1所示。

计算机常见编码

计算机常见编码 一.有关编码的基础知识 1. 位bit 最小的单元 字节byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB 2. 二进制binary 八进制octal 十进制decimal 十六进制hex 3. 字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符 号,数字等。 字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。 字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一 个字符用多少字节表示等问题,则是由编码来决定的。计算机要 准确的处理各种字符集文字,需要进行字符编码,以便计算机能 够识别和存储各种文字。 二.常见字符集的编码介绍: 常见的字符集有:ASCII 字符集,GB2312 字符集,BIG5 字符集,GB18030 字符集,Unicode 字符集,下面一一介绍: 1. ASCII 字符集: 定义: 美国信息互换标准代码,是基于罗马字母表的一套电脑编码系统,主要显示 英语和一些西欧语言,是现今最通用的单字节编码系统。 包含内容: 控制字符(回车键,退格,换行键等) 可显示字符(英文大小写,阿拉伯数字,西文符号) 扩展字符集(表格符号,计算符号,希腊字母,拉丁符号) 编码方式: 第0-31 号及127 号是控制字符或通讯专用字符; 第32-126 号是字符,其中48-57 号为0-9 十个阿拉伯数字,65-90 号为26 个 大写英文字母,97-122 号为26 个英文小写字母,其余为一些标点符号,运 算符号等。 在计算机存储单元中,一个ASCII 码值占一个字节(8 个二进制位),最高位 是用作奇偶检验位。【奇偶校验是指:在代码传送的过程中,用来检验是否 出错的一种方法。】奇偶校验分为奇校验和偶校验。奇校验规定:正确的代 码一个字节中1 的个数必须是奇数,若非奇数,则在最高位添1;偶校验规 定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位添 1。

Unicode汉字编码表

Unicode汉字编码表 1 unicode编码表 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode 对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来编码,看一下Unicode对汉字的编码: ------------------------------------------------------------------------ 2 汉字编码表 U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F ----------------------------------------------------- 4e00 一丁丂七丄丅丆万丈三上下丌不与丏 4e10 丐丑丒专且丕世丗丘丙业丛东丝丞丟 4e20 丠両丢丣两严並丧丨丩个丫丬中丮丯

字符编码方式介绍及编码方式测试

第一部分编码方式介绍 一、编码: 美国标准信息交换标准码( , ) 在计算机内部,所有地信息最终都表示为一个二进制地字符串.每一个二进制位()有和两种状态.一个字节()共由八个二进制位来组成,共有种状态,从到. 阿拉伯数字、英文字母、标点符号等这些字符,怎么定义才能让计算机识别呢?因为计算机只识别二进制位和,所以以上这些字符就必须与二进制位(和)建立关系,才能让计算机识别. 年代初,计算机界制定了一套统一地字符编码,来表示字符与二进制位之间地关系.这种统一地字符编码就叫做编码.码一共规定了个字符地编码,比如空格是(二进制),大写地字母是(二进制).这个符号(包括个不能打印出来地控制符号),只占用了一个字节地后面位,最前面地位统一规定为. 在英语国家,个编码足以表达所有字符,但其它非英语国家,字符不是由英文字符组成,这样就需要增加编码以表达这些字符,对于超过个字符地编码被称为非编码.比如:在中国,我们用简体中文,字符编码方式为.个人收集整理勿做商业用途 二、编码: 看到上面地介绍后,我们了解了最早编码是码.它只用个二进制位来表示,由于那个时期生产地大多数计算机使用位大小地字节,因此用户不仅可以存放所有可能地字符,而且有整整一位空余下来.如果你技艺高超,可以将该位用做自己离奇地目地:中那个发暗地灯泡实际上设置这个高位,以指示一个单词中地最后一个字母,同时这也宣示了只能用于英语文本. 由于字节有多达位地空间,因此许多人在想:“呀!我们可以把之间地编码用做个人地应用目地.”问题在于,同时产生这种想法地人相当多,而且在之间地各个位置上应该存放什么这一问题上,真是仁者见仁智者见智.事实上,只要人们开始在美国以外地地方购买计算机,那么各种各样地不同字符集都会进入规划设计行列,并且各人都会根据自己地需要使用高位地个字符.如此一来,甚至在同语种地文档之间就不容易实现互换. 可被扩展,最优秀地扩展方案是,通常称之为.包括了足够地附加字符集来写基本地西欧语言. 最后,这个人参与地终于以标准地形式形成文件.在标准中,每个人都认同如何使用低端地个编码,这与相当一致.不过,根据所在国籍地不同,处理编码以上地字符有许多不同地方式.这些不同地系统称为代码页. 同时,甚至更为令人头疼地事情正在逐步上演,亚洲国家地字符表有成千上万个字符,这样地字符表是用位二进制无法表示地.该问题地解决通常有赖于称为(,双字节字符集)地繁杂字符系统. 不过,仍然需要指出一点,多数人还是姑且认为一个字节就是一个字符,以及一个字符就是个二进制位,并且只要确保不将字符串从一台计算机移植到另一台计算机,或者说一种以上地语言,那么这几乎总是可以凑合.当然,只要一进入,从一台计算机向另一台计算机移植字符串就成为家常便饭了,而各种复杂状况也随之呈现出来.令人欣慰地是,随即问世了.个人收集整理勿做商业用途 字符集(简称为),国际标准组织于年月成立工作组,针对各国文字、符号进行统一性编码.年美国跨国公司成立,并于年月与达成协议,采用同一编码字集.目前是采用位编码体系,其字符集内容与地()相同.于年月通过(),目前版本于公布,内容包含符号个,汉字个,韩文拼音个,造字区个,保留个,共计个.编码后地大小是一样地.例如一个英文字母"" 和一个汉字"好",编码后都是占用地空间大小是一样地,都是两个字节!个人收集整理勿做商业用途 可以用来表示所有语言地字符,而且是定长双字节(也有四字节地)编码,包括英文字

常用字符集介绍和编码转换原理

常用字符集介绍和编码转换原理 目录 1. GB2312编码介绍 (2) 1.1 基本信息 (2) 1.2 GB标准 (2) 1.3 分区表示 (2) 1.4 字节结构 (2) 2. 通用字符集UCS (3) 2.1 定义 (3) 2.2 概要 (3) 2.3 实现级别 (3) 2.4 与UNICODE的兼容关系 (3) 3. unicode编码介绍 (3) 3.1 基本简介 (4) 3.2 编码实现 (4) 3.2.1 编码方式 (4) 3.2.2 实现方式 (5) 4. UTF-8介绍 (5) 4.1 基本介绍 (5) 4.2 编码原理 (5) 4. 转换原理 (7)

1. GB2312编码介绍 1.1 基本信息 1.2 GB标准 GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。 GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。 GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。 对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。 1.3 分区表示 GB 2312中对所收汉字进行了―分区‖处理,每区含有94个汉字/符号。这种表示方式也称为区位码。 01-09区为特殊符号。 16-55区为一级汉字,按拼音排序。 56-87区为二级汉字,按部首/笔画排序。 10-15区及88-94区则未有编码。 举例来说,―啊‖字是GB2312之中的第一个汉字,它的区位码就是1601。 1.4 字节结构

全国计算机一级考试汉字编码选择题复习

汉字编码选择题复习 1、一个汉字的内码长度为2个字节,其每个字节的最高二进制位的值依次分别是________。 A)0,0 B)0,1 C)1,0 D)1,1 【解析】国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,于是,汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由0改1,其余7位不变,因此机内码前后字节最高位都为1。 2、、一个汉字的16×16点阵字形码长度的字节数是________。 A)16 B)24 C)32 D)40 【解析】每个点阵用一个0或1代替,需要16*16个0或1,因为8位为一字节,换算成字节就是16*16/8. 3、根据汉字国标GB2312-80的规定,一个汉字的内码码长为________。 A)8bit B)12bit C)16bit D)24bit 【解析】一个汉字是两个字节,一字节是8bit,所以就是16bit。 4、下列4个4位十进制数中,属于正确的汉字区位码的是________。 A)5601 B)9596 C)9678 D)8799 【解析】区位码:94×94阵列,区号范围:1~94,位号范围:1~94。 5、存储1024个24×24点阵的汉字字形码需要的字节数是________。 A)720B B)72KB C)7000B D)7200B 【解析】在24×24的网格中描绘一个汉字,整个网格分为24行24列,每个小格用1位二进制编码表示,每一行需要24个二进制位,占3个字节,24行共占24×3=72个字节。1024个需要1024×72=73728字节。 6、在计算机中,对汉字进行传输、处理和存储时使用汉字的________。 A)字形码 B)国标码 C)输入码D)机内码 【解析】显示或打印汉字时使用汉字的字形码,在计算机内部时使用汉字的机内码。 7、区位码输入法的最大优点是________。 A)只用数码输入,方法简单、容易记忆 B)易记易用 C)一字一码,无重码 D)编码有规律,不易忘记 【解析】区位码输入是利用国标码作为汉字编码,每个国标码对应一个汉字或一个符号,没有重码。 8、下列关于汉字编码的叙述中,错误的是________。 A)BIG5码是通行于香港和台湾地区的繁体汉字编码 B)一个汉字的区位码就是它的国标码

信息交换用汉字编码字符集

〇信息交换用汉字编码字符集--基本集〈—即国家标准 GB2312-80 从1975年开始,我国为了研究汉字的使用频度,进行了大规模的字频统计工作,内容包括工业、农业、军事、科技、政治、经济、文学、艺术、教育、体育、医药卫生、天文地理、自然、化学、文字改革、考古等多方面的出版物,在数以亿计的浩瀚文献资料中,统计出实际使用的不同的汉字数为6335个,而其中有3000多个汉字的累计使用频度达到了99.9%,而另外的3000多个累计频度不到0.1%,说明了常用汉字与次常用汉字的数量不足7000个,这就为国家制定汉字库标准提供了依据。 1980年颁布了〇信息交换用汉字编码字符集—基本集〈的国标交换码,国家标准号为:GB2312-80,选入了6763个汉字,分为两级,一级字库中有3755个,是常用汉字,二级字库中有3008个,是次常用汉字;还选入了682个字符,包含有数字、一般符号、拉丁字母、日本假名、希腊字母、俄文字母、拼音符号、注音字母等。以前我国大陆的各种中文DOS版本、Windows3.1 /3.2版本,装入的字库都是国标一二级字库。 〇GB2312-80〈对 7445 个图形字符作了二进制数编码,这些图形字符是: 6763 个汉字,字体为简化字,分成两级。第一级汉字 3755 个,按拼音排序,约占近代文献汉字累计使用频度 99.9% 左右;二级汉字 3008 个,按部首、笔画排序。一、二级汉字约占累计使用频度 99.99% 以上。 202 个一般符号。其中包括 1.~20.,(1)~(20),?~?,(-)~(+) 等。 22 个数字。其中 0~9 共 10 个,‥~‰ 共 12 个。 52 个拉丁字母。其中大写字母A~Z 26 个,小写字母a~z 26 个。 169 个日文假名。其中平假名 83 个,片假名 86 个。 48 个希腊字母。其中大写字母Α~Χ24 个,小写字母α~ω24 个。 66 个俄文字母。其中大写字母А~Я33 个,小写字母а~я 33 个。 26 个汉语拼音符号,包括带声调符号和其它符号的字母。 37 个汉语注音字母,?~ㄗ。 GB2312简体中文编码表 code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F A1A0 、。? í ì ¨ 〃?—~‖ … ‘ ’ A1B0 “ ” 【】々〆〇〈〉《》「〒〓」『 A1C0 a ? ? ? ?  ̄ ? ? ? ? ‵ ? ? ? ? ※ A1D0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A1E0 ? ? ? ? ? ? ? $¤ ??? § ? ? ? A1F0 ? ? ? ? ? ? ? ? ? ? ″ ? ′ ? 』 code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F A2A0 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ A2B0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

字符编码

1、什么是字符编码,为什么要字符编码? 2、区分“字符集”和“编码” 3、几种常用的字符编码。 首先介绍一下拉丁字母: 拉丁字母,也叨罗马字母,是当仂丐界上使用最广的字母系统。 拉丁字母,戒者说基本的拉丁字母,就是你所常见的到的ABCD 等26 个英文字母。 原先是欧洲那边使用的,后来由亍欧洲殖民主义,导致后来的美洲等地,也是用的这套字 母体系。 而其他有些地方,比如越南等,本来有自己的文字语言的,结果受西斱文化的影响和由亍 基督教的传播,也用拉丁字母了。 所以总的说,现在欧洲多数国家,美洲,澳洲,非洲的多数国家,都是用的拉丁字母,即 你所常见的英文字母,也是拉丁字母。而中国的汉语拼音,也是用的这个拉丁字母。 那字符编码是什么? 计算机中存放的都是0 和1 的二进制值。8 个位对应一个字节,常用16 迚制来表示。 而我们普通用户所希望看到的是,计算机把其所存储的对应的16 迚制的数值,转化为对 应的字符,包括英文和中文等其他语言的字符,然后输出到屏幕上。而所谓编码,就是,定义了一套规则,去指定,哪些数值,对应着哪些字符。举个最简单的例子,常见65=0x41 对应的是大写字母A,97=0x61 对应的是小写字母a,而这套数值和字母之间的映射兰系,说白了,就是一套规则,就叫做字符编码,即我们常说 的ASCII 编码。 所以字符编码就是:定义了一套规则,指定了计算机中存放的这么多值中的哪个值,对应 了电脑屏幕显示出来的哪个字母。 区分一下“字符集”和“编码” 使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。 规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。 各个国家和地区在制定编码标准的时候,“字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。 区分一下“字符集”和“编码”的概念很重要,因为有的字符集有多种“编码”实现。 下面介绍几种具体的字符编码。 大致按照它们出现的先后顺序进行介绍。 计算机刚出现的旪候,虽然是美国人发明的,但是也要面对一个问题,即如何将对应的计 算机中的数值,转化为对应的字母,而显示出来,即采用什么样的规则,而当时,各个厂

Unicode汉字编码表

Unicode汉字编码表 1 Unicode编码表 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来 编码,看一下Unicode对汉字的编码:

------------------------------------------------------------------------ 2 汉字编码表 U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F ----------------------------------------------------- 4e00 一丁丂七丄丅丆万丈三上下丌不与丏 4e10 丐丑丒专且丕世丗丘丙业丛东丝丞丟 4e20 丠両丢丣两严並丧丨丩个丫丬中丮丯 4e30 丰丱串丳临丵丶丷丸丹为主丼丽举丿 4e40 乀乁乂乃乄久乆乇么义乊之乌乍乎乏 4e50 乐乑乒乓乔乕乖乗乘乙乚乛乜九乞也 4e60 习乡乢乣乤乥书乧乨乩乪乫乬乭乮乯 4e70 买乱乲乳乴乵乶乷乸乹乺乻乼乽乾乿 4e80 亀亁亂亃亄亅了亇予争亊事二亍于亏 4e90 亐云互亓五井亖亗亘亙亚些亜亝亞亟 4ea0 亠亡亢亣交亥亦产亨亩亪享京亭亮亯 4eb0 亰亱亲亳亴亵亶亷亸亹人亻亼亽亾亿 4ec0 什仁仂仃仄仅仆仇仈仉今介仌仍从仏 4ed0 仐仑仒仓仔仕他仗付仙仚仛仜仝仞仟 4ee0 仠仡仢代令以仦仧仨仩仪仫们仭仮仯 4ef0 仰仱仲仳仴仵件价仸仹仺任仼份仾仿 4f00 伀企伂伃伄伅伆伇伈伉伊伋伌伍伎伏 4f10 伐休伒伓伔伕伖众优伙会伛伜伝伞伟 4f20 传伡伢伣伤伥伦伧伨伩伪伫伬伭伮伯

各种文字编码简介常见的编码都有介绍

各种文字编码简介 ASCII ASCII码是7位编码,编码范围是0×00-0×7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0×00-0×20和0×7F共33个控制字符。 只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。 GB2312 GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。 区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。 它将收录的汉字分成两级: 第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。 GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。GB2312的编码范围是 0xA1-0×7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1-0xF7FE。 EUC-CN可以理解为GB2312的别名,和GB2312完全相同。

中文字符集

最近一直被这个字符集问题,弄的头疼。想不到一个很好的办法去解决。问题是这样的:“在超链接中传递参数的时候总是出现乱码”在Action中用debug查的时候就是乱码,在Tomcat 中把Service.xml将字符集改成UTF-8,GBK,GB2312都试过了,仍然没有解决这个问题。很是郁闷!~~~ 在现实工作中我们会经常遇到字符转换的问题:有的时候还会出现乱码.因为工作需要我从别人的静态网页上抓取数据.用到的方法是传一个uri进去,然后取出你所想得到的字符串.代码如下: public static String getData(String url1) throws Exception { String result = ""; URL url = new URL(url1); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(connection. getInputStream(),"UTF-8")); //特别注意这里,后面的编码格式,一般都是用UTF-8,因为这是通用的.如果用汉字可以用GBK.不要用gb2312.因为它是GBK的子集. String line; while ( (line = in.readLine()) != null) { result = result + "\n" + line; } in.close(); String html =replaceFunc2(replaceFunc2(result,""); return html; } public static String replaceFunc2(String str_source, String str_start,String str_end) { String info = "", rep_str = "", rep_str2 = ""; int startFlag = 0, endFlag = 0; startFlag = str_source.indexOf(str_start); endFlag = str_source.indexOf(str_end); info = str_source; if (startFlag >= 0 && endFlag >= 0 && startFlag < endFlag) { rep_str = info.substring(0, startFlag); rep_str2 = info.substring(endFlag + str_end.length()); info = rep_str + rep_str2; } // System.out.print("==========="+info+"=========="); return info; }

中文字符集、编码

前言
由于工作的需要,参考了好多资料整理出来一份计算机汉字处理报告,不敢独享,希 望与大家共享。Ziggler 现代计算机技术虽然先进, 但大多数人只知录入 GB-2313 字符集内的 6763 个简体汉字, 对包含 21003 个简繁体汉字的 GBK 字符集的文字录入、字体 显示就已不甚了解(市面上 绝大多数所谓的繁体字体,其实采用的是 GB2313 字符集简体字的编码,用字体显示为繁体 字,而不是直接用 GBK 字符集中繁体字 的编码,错误百出) 。而汉字总数至少有近 10 万 个,目前计算机能处理的,也有 70244 个,已非一般人所能知能用了。 由于汉字总数非常庞大。 汉字总共有多少字?到目前为止, 恐怕没人能够答得上来精确 的数字。据估计,汉字数量达到 11 万左右。 这里所说的七万多汉字, 是指 UNICODE 超大字集全部七万多中日韩汉字。 (注: Unicode 是指用两个字节表示每个字符的字符编码方案。 ) 那一般计算机能够显示多少个汉字呢?比如大陆这边普遍安装简体 Windows 系统,而 简体 windows 以宋体为系统字型,宋体支持 GBK 编码,所以能显示 20902 个汉字。 要显示 71564 个汉字, 可以采取多种方案, 如: 宋体-方正超大字符集+新细明体 EXTB、 宋体-方正超大字符集+中易宋体 EXTB、宋体 GB18030+新细明体 ExtB、宋体 18030+宋体 ExtB 等等。
中文字符集、编码
字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符 集是多个字符的集合,字符集 种类较多,每个字符集包含的字符个数不同。 计算机要准确的处理各种字符集文字, 需要进行字符编码, 以便计算机能够识别和存储 各种文字。 中文文字数目大, 而且还分为简体中文和繁体中文两种不同书写规则的文字, 而计算机 最初是按英语单字节字符设计的, 因此, 对中文字符进行编码, 是中文信息交流的技术基础。 以下是常见的一些字符集介绍,部分字符集中包括编码介绍。
GB2312 字符集
1.名称的由来 GB2312 又称为 GB2312-80 字符集,全称为《信息交换用汉字编码字符集·基本集》 ,由原中 国国家标准总局发布,1981 年 5 月 1 日实施。 2.特点 GB2312 是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖 99.75%的使用频率,

(国内标准)国标(GB)汉字编码对照表

汉字编码简明对照表 说明: 1、下列汉字取自国标(GB 2312-80)中的分级与排列内容;包含所有的第一级汉字和第二级汉字中的常用部分。 2、第一级汉字(16—55区的汉字)以拼音字母为序进行排列,同音字以笔形顺序横、竖、撇、捺、折为序,起笔相同的按第二笔,依次类推;第二级汉字(56-87区的汉字)按部首为序进行排列。 3、对于多音字,仅在表中出现一次。如:柏,音(bai,bo),表中仅出现在“bai”中。 4、汉字区位码用阿拉伯数字表示,每个汉字对应4个数字。 5、本汉字代码表摘自《字符集和信息编码国家标准汇编》,(中国标准出版社,1998年编)。 a 啊 1601 阿 1602 吖 6325 嗄 6436 腌 7571 锕 7925 ai 埃 1603 挨 1604 哎 1605 唉 1606 哀 1607 皑 1608 癌 1609 蔼 1610 矮 1611 艾 1612 碍 1613 爱 1614 隘 1615 捱 6263 嗳 6440 嗌 6441 嫒 7040 瑷 7208 暧 7451 砹 7733 锿 7945 霭 8616 an 鞍 1616 氨 1617 安 1618 俺 1619 按 1620 暗 1621 岸 1622 胺 1623 案 1624 谙 5847 埯 5991 揞 6278 犴 6577 庵 6654 桉 7281 铵 7907 鹌 8038 黯 8786 ang 肮 1625 昂 1626 盎 1627 ao

凹 1628 敖 1629 熬 1630 翱 1631 袄 1632 傲 1633 奥 1634 懊 1635 澳 1636 坳 5974 拗 6254 嗷 6427 岙 6514 廒 6658 遨 6959 媪 7033 骜 7081 獒 7365 聱 8190 螯 8292 鏊 8643 鳌 8701 鏖 8773 ba 芭 1637 捌 1638 扒 1639 叭 1640 吧 1641 笆 1642 八 1643 疤 1644 巴 1645 拔 1646 跋 1647 靶 1648 把 1649 耙 1650 坝 1651 霸 1652 罢 1653 爸 1654 茇 6056 菝 6135 岜 6517 灞 6917 钯 7857 粑 8446 鲅 8649 魃 8741 bai 白 1655 柏 1656 百 1657 摆 1658 佰 1659 败 1660 拜 1661 稗 1662 捭 6267 呗 6334 掰 7494 ban 斑 1663 班 1664 搬 1665 扳 1666 般 1667 颁 1668 板 1669 版 1670 扮 1671 拌 1672 伴 1673 瓣 1674 半 1675 办 1676 绊 1677 阪 5870 坂 5964 钣 7851 瘢 8103 癍 8113 舨 8418 bang 邦 1678 帮 1679 梆 1680 榜 1681 膀 1682 绑 1683 棒 1684 磅 1685 蚌 1686 镑 1687 傍 1688 谤 1689 蒡 6182 浜 6826 bao 苞 1690 胞 1691 包 1692 褒 1693 剥 1694 薄 1701 雹 1702 保 1703 堡 1704 饱 1705 宝 1706 抱 1707 报 1708 暴 1709 豹 1710 鲍 1711 爆 1712 葆 6165 孢 7063 煲 7650 鸨 8017 褓 8157 趵 8532 龅 8621 bei 杯 1713 碑 1714 悲 1715 卑 1716 北 1717 辈 1718 背 1719 贝 1720 钡 1721 倍 1722 狈 1723 备 1724 惫 1725 焙 1726 被 1727 孛 5635 陂 5873 邶 5893 蓓 6177 悖 6703 碚 7753 鹎 8039 褙 8156 鐾 8645 鞴 8725 ben 奔 1728 苯 1729 本 1730 笨 1731 畚 5946 坌 5948 贲 7458 锛 7928 beng 崩 1732 绷 1733 甭 1734 泵 1735 蹦 1736 迸 1737 嘣 6452 甏 7420 bi

汉字信息编码标准

1.国家标准汉字代码体系 ??汉字字数繁多,属性丰富,因而汉字代码体系也较复杂,包括: ??(1)汉字机内码。它们是汉字在计算机汉字系统内部的表示方法,是计算机汉字系统 的基础代码。 ??(2)汉字交换码。它们是国标汉字(如机内码)进行信息交换的代码标准。 ??(3)汉字输入码。它们是在计算机标准键盘上输入汉字用到的各种代码体系。 ??(4)汉字点阵码。它们是在计算机屏幕上显示和在打印机上打印输出汉字的代码体系。??(5)汉字字形控制码。为了打印各种风格的字体和字形所制定的代码。 ??这些代码系统有的必须有统一的国家标准,有的则不要求统一。近年来我国已经制定 系列汉字信息处理方面的国家标准,今后将继续完善,并与国际上求得统一。 2. 国家标准汉字交换码 ??我国制定了“中华人民共和国国家标准信息交换汉字编码”,标准代号为GB2312—80,这种编码又称为国标码。在国标码的字符集中共收录了一级汉字3755个,二级汉字3008 个,图形符号682个,三项字符总计7445个。 ??在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01 位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区位码为0331,则它在03区3l位。 ??所有的汉字和符号所在的区分为以下四个组: ? ? (1)01区到15区。图形符号区,其中01区到09区为标准符号区,10区到15区为 自定义符号区。 ??01区到09区的具体内容如下; ??1)01区。一般符号202个,如间隔符、标点、运算符、单位符号及制表符; ??2)02区。序号60个,如1.~20.、(1)~(20)、①~⑩及(一)~(十); ??3)03区。数字22个,如0—9及X一XII,英文字母52个,其中大写A—Z、小写 a—z各26个; ??4)04区。日文平假名83个; ??5)05区。日文片假名86个; ??6)06区。希腊字母48个; ??7)07区。俄文字母66个; ??8)08区。汉语拼音符号a—z26个; ??9)09区。汉语拼音字母37个。 ? ? (2)16区到55区。一级常用汉字区,包括了3755个一统汉字。这40个区中的汉字是按汉语拼音排序的,同音字按笔划顺序排序。其中55区的90一94位未定义汉字。 ? ? (3)56区到87区。二级汉字区,包括了3008个二级汉字,按部首排序。 ? ? (4)88区到94区。自定义汉字区。 ? ? 第10区到第15区的自定义符号区和第88区到第94区的自定义汉字区可由用户自行??定义国标码中未定义的符号和汉字。 3. 国家标准汉字机内码

字符编码之间的相互转换 UTF8与GBK

字符编码之间的相互转换UTF8与GBK C++ UTF8编码转换CChineseCode 一预备知识 1,字符:字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。 2,字符集:字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。这也说明了字符和字符集之间的关系,字符组成字符集(iso8859-1,GB2312/GBK,unicode)。 3,代码点:字符集中的每个字符都被分配到一个“代码点”。每个代码点都有一个特定的唯一数值,称为标值。该标量值通常用十六进制表示。 4,代码单元:在每种编码形式中,代码点被映射到一个或多个代码单元。“代码单元”是各个编码方式中的单个单元。代码单元的大小等效于特定编码方式的位数:UTF-8 :UTF-8 中的代码单元由8 位组成;在UTF-8 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个、三个或四个代码单元;UTF-16 :UTF-16 中的代码单元由16 位组成;UTF-16 的代码单元大小是8 位代码单元的两倍。所以,标量值小于U+10000 的代码点被编码到单个代码单元中;UTF-32:UTF-32 中的代码单元由32 位组成;UTF-32 中使用的32 位代码单元足够大,每个代码点都可编码为单个代码单元;GB18030:GB18030 中的代码单元由8 位组成;在GB18030 中,因为代码单元较小的缘故,每个代码点常常被映射到多个代码单元。代码点将被映射到一个、两个或四个代码单元。 5,举例:“中国北京香蕉是个大笨蛋”这是我定义的aka字符集; 各字符对应代码点为: 北00000001 京00000010 香10000001 蕉10000010 是10000100 个10001000 大10010000 笨10100000 蛋11000000 中00000100 国00001000 下面是我定义的zixia 编码方案(8位),可以看到它的编码中表示了aka字符集的所有字符对应的代码单元; 北10000001 京10000010 香00000001 蕉00000010 是00000100 个00001000 大00010000 笨00100000 蛋01000000 中10000100 国10001000 所谓文本文件就是我们按一定编码方式将二进制数据表示为对应的文本如00000001000000100000010000001000000100000010000001000000这样的文件。我用一个支持zixia编码和aka字符集的记事本打开,它就按照编码方案显示为“香蕉是个大笨蛋” 如果我把这些字符按照GBK 另存一个文件,那么则肯定不是这个,而是1100111111100011 1011110110110110 1100101011000111 1011100011110110 1011010011110011 1011000110111111 1011010110110000 110100001010 二,字符集

相关主题
文本预览
相关文档 最新文档