密码学之ASCII编码(03)

简介: 密码学之ASCII编码

四、大小规则


常见ASCII码的大小规则:0~9<A~Z<a~z。


1)数字比字母要小。如 “7”<“F”;

2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;

3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;

4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。

几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。


五、问题


    在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号 。


    但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段 。


    至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256 x 256 = 65536 个符号。


六、扩展


1981年IBM PC ROM256个字符的字符集,即IBM扩展字符集。

1985年11Windows字符集被称作“ANSI字符集”,遵循了ANSI草案和ISO标准(ANSI/ISO8859-1-1987,简“Latin 1”。

为了解决中国、日本和韩国的象形文字符和ASCII的某种兼容性,出现了双字节字符集(DBCS:double-byte character set)。DBCS从 第256 代码开始,就像ASCII一样,最初的128个代码是ASCII。然而,较高的128个代码中的某些总是跟随着第二个字节。这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字。

七、汉字编码


    目前的文字编码标准主要有 ASCII、GB2312、GBK、Unicode等。ASCII 编码是最简单的西文编码方案。GB2312、GBK、GB18030 是汉字字符编码方案的国家标准。ISO/IEC 10646 和 Unicode 都是全球字符编码的国际标准。下面对与汉字相关的编码方案GB2312,GBK与GB18030做简要的分析。


GB2312-80 标准


    GB2312-80 是 1980 年制定的中国汉字编码国家标准。共收录 7445 个字符,其中汉字 6763 个。GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为 1。具体办法是:收集了 7445 个字符组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为“区位码”。区位输入法就是通过输入区位码实现汉字输入的。将区号和位号分别加上 20H,得到的 4 位十六进制整数称为国标码,编码范围为 0x2121~0x7E7E。为了兼容标准 ASCII 码,给国标码的每个字节加 80H,形成的编码称为机内码,简称内码,是汉字在机器中实际的存储代码GB2312-80 标准的内码范围是 0xA1A1~0xFEFE。


GBK 编码标准


《汉字内码扩展规范》(GBK) 于1995年制定,兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码,编码空间为 0x8140~0xFEFE,共有 23940 个码位,其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。GBK向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。ISO 10646 是国际标准化组织ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的Unicode编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1。


GB18030编码标准


国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。GB18030-2000编码标准是由信息产业部和国家质量技术监督局在2000年 3月17日联合发布的,并且将作为一项国家标准在2001年的1月正式强制执行。GB18030-2005《信息技术中文编码字符集》是我国制订的以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70000余个。


目录
相关文章
|
7月前
|
网络协议
ASCII编码
ASCII编码
195 1
|
JavaScript 前端开发 Java
Unicode转义(\uXXXX)的编码和解码
  在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式.
2625 0
|
4月前
|
自然语言处理
字符编码问题之UTF-16不直接采用4字节定长编码来支持所有字符如何解决
字符编码问题之UTF-16不直接采用4字节定长编码来支持所有字符如何解决
52 0
|
7月前
ASCII编码中定义了33个控制字符
ASCII编码中定义了33个控制字符
341 2
|
7月前
ASCII编码的10个阿拉伯数字
ASCII编码的10个阿拉伯数字
1017 1
|
7月前
|
存储 JavaScript Java
[字符编码] 理论篇:常见字符集与编码方式
[字符编码] 理论篇:常见字符集与编码方式
192 0
|
PHP 数据安全/隐私保护
PHP函数学习:16进制ASCII转化为字符串加密解密
PHP函数学习:16进制ASCII转化为字符串加密解密
270 0
|
存储 XML 算法
转义、编码和加密
转义、编码和加密是开发中很常见也很基础的概念。对于初学开发的开发者,可能有时会无法准确的区分着几个词。我们将通过这篇文章来了解一下“转义、编码和加密”这几个词的关联和区别。
98 0
转义、编码和加密
|
前端开发 数据安全/隐私保护 网络架构
Base64编码是加密算法吗?
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情 大家好,我是阿萨。昨天和开发同学一起开会的时候。开发同学说到了用Base64编码,我立即说 不能使用Base64加密。然后开发来了一句Base64不是加密算法。当时懵了。默默记下这个知识点,回来学习下。
336 0
Base64编码是加密算法吗?
|
算法 安全 测试技术
笔记-加密编码算法
笔记-加密编码算法
144 0
笔记-加密编码算法